﻿using System;
using System.Collections.Generic;
using Hl7.Fhir.Introspection;
using Hl7.Fhir.Validation;
using System.Linq;
using System.Runtime.Serialization;

/*
  Copyright (c) 2011+, HL7, Inc.
  All rights reserved.
  
  Redistribution and use in source and binary forms, with or without modification, 
  are permitted provided that the following conditions are met:
  
   * Redistributions of source code must retain the above copyright notice, this 
     list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice, 
     this list of conditions and the following disclaimer in the documentation 
     and/or other materials provided with the distribution.
   * Neither the name of HL7 nor the names of its contributors may be used to 
     endorse or promote products derived from this software without specific 
     prior written permission.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
  POSSIBILITY OF SUCH DAMAGE.
  

*/

//
// Generated on Wed, 17 Jul 2019 14:41:10 GMT for FHIR v1.0.2
//

using Hl7.Fhir.Model;

namespace Hl7.Fhir.Model
{
    /*
    * A class with methods to retrieve information about the
    * FHIR definitions based on which this assembly was generated.
    */
    public static partial class ModelInfo
    {
        public static List<string> SupportedResources = 
            new List<string>
            {
                "Account",
                "AllergyIntolerance",
                "Appointment",
                "AppointmentResponse",
                "AuditEvent",
                "Basic",
                "Binary",
                "BodySite",
                "Bundle",
                "CarePlan",
                "Claim",
                "ClaimResponse",
                "ClinicalImpression",
                "Communication",
                "CommunicationRequest",
                "Composition",
                "ConceptMap",
                "Condition",
                "Conformance",
                "Contract",
                "Coverage",
                "DataElement",
                "DetectedIssue",
                "Device",
                "DeviceComponent",
                "DeviceMetric",
                "DeviceUseRequest",
                "DeviceUseStatement",
                "DiagnosticOrder",
                "DiagnosticReport",
                "DocumentManifest",
                "DocumentReference",
                "EligibilityRequest",
                "EligibilityResponse",
                "Encounter",
                "EnrollmentRequest",
                "EnrollmentResponse",
                "EpisodeOfCare",
                "ExplanationOfBenefit",
                "FamilyMemberHistory",
                "Flag",
                "Goal",
                "Group",
                "HealthcareService",
                "ImagingObjectSelection",
                "ImagingStudy",
                "Immunization",
                "ImmunizationRecommendation",
                "ImplementationGuide",
                "List",
                "Location",
                "Media",
                "Medication",
                "MedicationAdministration",
                "MedicationDispense",
                "MedicationOrder",
                "MedicationStatement",
                "MessageHeader",
                "NamingSystem",
                "NutritionOrder",
                "Observation",
                "OperationDefinition",
                "OperationOutcome",
                "Order",
                "OrderResponse",
                "Organization",
                "Parameters",
                "Patient",
                "PaymentNotice",
                "PaymentReconciliation",
                "Person",
                "Practitioner",
                "Procedure",
                "ProcedureRequest",
                "ProcessRequest",
                "ProcessResponse",
                "Provenance",
                "Questionnaire",
                "QuestionnaireResponse",
                "ReferralRequest",
                "RelatedPerson",
                "RiskAssessment",
                "Schedule",
                "SearchParameter",
                "Slot",
                "Specimen",
                "StructureDefinition",
                "Subscription",
                "Substance",
                "SupplyDelivery",
                "SupplyRequest",
                "TestScript",
                "ValueSet",
                "VisionPrescription",
            };
        
        public static string Version
        {
            get { return "1.0.2"; }
        }
        
        public static Dictionary<string,Type> FhirTypeToCsType =
            new Dictionary<string,Type>()
            {
                { "Address", typeof(Hl7.Fhir.Model.Address) },
                { "Age", typeof(Age) },
                { "Annotation", typeof(Hl7.Fhir.Model.Annotation) },
                { "Attachment", typeof(Hl7.Fhir.Model.Attachment) },
                { "BackboneElement", typeof(BackboneElement) },
                { "base64Binary", typeof(Hl7.Fhir.Model.Base64Binary) },
                { "boolean", typeof(Hl7.Fhir.Model.FhirBoolean) },
                { "code", typeof(Hl7.Fhir.Model.Code) },
                { "CodeableConcept", typeof(Hl7.Fhir.Model.CodeableConcept) },
                { "Coding", typeof(Hl7.Fhir.Model.Coding) },
                { "ContactPoint", typeof(Hl7.Fhir.Model.ContactPoint) },
                { "Count", typeof(Count) },
                { "date", typeof(Hl7.Fhir.Model.Date) },
                { "dateTime", typeof(Hl7.Fhir.Model.FhirDateTime) },
                { "decimal", typeof(Hl7.Fhir.Model.FhirDecimal) },
                { "Distance", typeof(Distance) },
                { "Duration", typeof(Duration) },
                { "Element", typeof(Element) },
                { "ElementDefinition", typeof(Hl7.Fhir.Model.ElementDefinition) },
                { "Extension", typeof(Hl7.Fhir.Model.Extension) },
                { "HumanName", typeof(Hl7.Fhir.Model.HumanName) },
                { "id", typeof(Hl7.Fhir.Model.Id) },
                { "Identifier", typeof(Hl7.Fhir.Model.Identifier) },
                { "instant", typeof(Hl7.Fhir.Model.Instant) },
                { "integer", typeof(Hl7.Fhir.Model.Integer) },
                { "markdown", typeof(Hl7.Fhir.Model.Markdown) },
                { "Meta", typeof(Hl7.Fhir.Model.Meta) },
                { "Money", typeof(Money) },
                { "Narrative", typeof(Narrative) },
                { "oid", typeof(Hl7.Fhir.Model.Oid) },
                { "Period", typeof(Hl7.Fhir.Model.Period) },
                { "positiveInt", typeof(Hl7.Fhir.Model.PositiveInt) },
                { "Quantity", typeof(Quantity) },
                { "Range", typeof(Hl7.Fhir.Model.Range) },
                { "Ratio", typeof(Hl7.Fhir.Model.Ratio) },
                { "Reference", typeof(Hl7.Fhir.Model.ResourceReference) },
                { "SampledData", typeof(Hl7.Fhir.Model.SampledData) },
                { "Signature", typeof(Hl7.Fhir.Model.Signature) },
                { "SimpleQuantity", typeof(SimpleQuantity) },
                { "string", typeof(Hl7.Fhir.Model.FhirString) },
                { "time", typeof(Hl7.Fhir.Model.Time) },
                { "Timing", typeof(Hl7.Fhir.Model.Timing) },
                { "unsignedInt", typeof(Hl7.Fhir.Model.UnsignedInt) },
                { "uri", typeof(Hl7.Fhir.Model.FhirUri) },
                { "uuid", typeof(Hl7.Fhir.Model.Uuid) },
                { "xhtml", typeof(Hl7.Fhir.Model.XHtml) },

                { "Account", typeof(Hl7.Fhir.Model.Account) },
                { "AllergyIntolerance", typeof(Hl7.Fhir.Model.AllergyIntolerance) },
                { "Appointment", typeof(Hl7.Fhir.Model.Appointment) },
                { "AppointmentResponse", typeof(Hl7.Fhir.Model.AppointmentResponse) },
                { "AuditEvent", typeof(Hl7.Fhir.Model.AuditEvent) },
                { "Basic", typeof(Hl7.Fhir.Model.Basic) },
                { "Binary", typeof(Hl7.Fhir.Model.Binary) },
                { "BodySite", typeof(Hl7.Fhir.Model.BodySite) },
                { "Bundle", typeof(Hl7.Fhir.Model.Bundle) },
                { "CarePlan", typeof(Hl7.Fhir.Model.CarePlan) },
                { "Claim", typeof(Hl7.Fhir.Model.Claim) },
                { "ClaimResponse", typeof(Hl7.Fhir.Model.ClaimResponse) },
                { "ClinicalImpression", typeof(Hl7.Fhir.Model.ClinicalImpression) },
                { "Communication", typeof(Hl7.Fhir.Model.Communication) },
                { "CommunicationRequest", typeof(Hl7.Fhir.Model.CommunicationRequest) },
                { "Composition", typeof(Hl7.Fhir.Model.Composition) },
                { "ConceptMap", typeof(Hl7.Fhir.Model.ConceptMap) },
                { "Condition", typeof(Hl7.Fhir.Model.Condition) },
                { "Conformance", typeof(Hl7.Fhir.Model.Conformance) },
                { "Contract", typeof(Hl7.Fhir.Model.Contract) },
                { "Coverage", typeof(Hl7.Fhir.Model.Coverage) },
                { "DataElement", typeof(Hl7.Fhir.Model.DataElement) },
                { "DetectedIssue", typeof(Hl7.Fhir.Model.DetectedIssue) },
                { "Device", typeof(Hl7.Fhir.Model.Device) },
                { "DeviceComponent", typeof(Hl7.Fhir.Model.DeviceComponent) },
                { "DeviceMetric", typeof(Hl7.Fhir.Model.DeviceMetric) },
                { "DeviceUseRequest", typeof(Hl7.Fhir.Model.DeviceUseRequest) },
                { "DeviceUseStatement", typeof(Hl7.Fhir.Model.DeviceUseStatement) },
                { "DiagnosticOrder", typeof(Hl7.Fhir.Model.DiagnosticOrder) },
                { "DiagnosticReport", typeof(Hl7.Fhir.Model.DiagnosticReport) },
                { "DocumentManifest", typeof(Hl7.Fhir.Model.DocumentManifest) },
                { "DocumentReference", typeof(Hl7.Fhir.Model.DocumentReference) },
                { "DomainResource", typeof(Hl7.Fhir.Model.DomainResource) },
                { "EligibilityRequest", typeof(Hl7.Fhir.Model.EligibilityRequest) },
                { "EligibilityResponse", typeof(Hl7.Fhir.Model.EligibilityResponse) },
                { "Encounter", typeof(Hl7.Fhir.Model.Encounter) },
                { "EnrollmentRequest", typeof(Hl7.Fhir.Model.EnrollmentRequest) },
                { "EnrollmentResponse", typeof(Hl7.Fhir.Model.EnrollmentResponse) },
                { "EpisodeOfCare", typeof(Hl7.Fhir.Model.EpisodeOfCare) },
                { "ExplanationOfBenefit", typeof(Hl7.Fhir.Model.ExplanationOfBenefit) },
                { "FamilyMemberHistory", typeof(Hl7.Fhir.Model.FamilyMemberHistory) },
                { "Flag", typeof(Hl7.Fhir.Model.Flag) },
                { "Goal", typeof(Hl7.Fhir.Model.Goal) },
                { "Group", typeof(Hl7.Fhir.Model.Group) },
                { "HealthcareService", typeof(Hl7.Fhir.Model.HealthcareService) },
                { "ImagingObjectSelection", typeof(Hl7.Fhir.Model.ImagingObjectSelection) },
                { "ImagingStudy", typeof(Hl7.Fhir.Model.ImagingStudy) },
                { "Immunization", typeof(Hl7.Fhir.Model.Immunization) },
                { "ImmunizationRecommendation", typeof(Hl7.Fhir.Model.ImmunizationRecommendation) },
                { "ImplementationGuide", typeof(Hl7.Fhir.Model.ImplementationGuide) },
                { "List", typeof(Hl7.Fhir.Model.List) },
                { "Location", typeof(Hl7.Fhir.Model.Location) },
                { "Media", typeof(Hl7.Fhir.Model.Media) },
                { "Medication", typeof(Hl7.Fhir.Model.Medication) },
                { "MedicationAdministration", typeof(Hl7.Fhir.Model.MedicationAdministration) },
                { "MedicationDispense", typeof(Hl7.Fhir.Model.MedicationDispense) },
                { "MedicationOrder", typeof(Hl7.Fhir.Model.MedicationOrder) },
                { "MedicationStatement", typeof(Hl7.Fhir.Model.MedicationStatement) },
                { "MessageHeader", typeof(Hl7.Fhir.Model.MessageHeader) },
                { "NamingSystem", typeof(Hl7.Fhir.Model.NamingSystem) },
                { "NutritionOrder", typeof(Hl7.Fhir.Model.NutritionOrder) },
                { "Observation", typeof(Hl7.Fhir.Model.Observation) },
                { "OperationDefinition", typeof(Hl7.Fhir.Model.OperationDefinition) },
                { "OperationOutcome", typeof(Hl7.Fhir.Model.OperationOutcome) },
                { "Order", typeof(Hl7.Fhir.Model.Order) },
                { "OrderResponse", typeof(Hl7.Fhir.Model.OrderResponse) },
                { "Organization", typeof(Hl7.Fhir.Model.Organization) },
                { "Parameters", typeof(Hl7.Fhir.Model.Parameters) },
                { "Patient", typeof(Hl7.Fhir.Model.Patient) },
                { "PaymentNotice", typeof(Hl7.Fhir.Model.PaymentNotice) },
                { "PaymentReconciliation", typeof(Hl7.Fhir.Model.PaymentReconciliation) },
                { "Person", typeof(Hl7.Fhir.Model.Person) },
                { "Practitioner", typeof(Hl7.Fhir.Model.Practitioner) },
                { "Procedure", typeof(Hl7.Fhir.Model.Procedure) },
                { "ProcedureRequest", typeof(Hl7.Fhir.Model.ProcedureRequest) },
                { "ProcessRequest", typeof(Hl7.Fhir.Model.ProcessRequest) },
                { "ProcessResponse", typeof(Hl7.Fhir.Model.ProcessResponse) },
                { "Provenance", typeof(Hl7.Fhir.Model.Provenance) },
                { "Questionnaire", typeof(Hl7.Fhir.Model.Questionnaire) },
                { "QuestionnaireResponse", typeof(Hl7.Fhir.Model.QuestionnaireResponse) },
                { "ReferralRequest", typeof(Hl7.Fhir.Model.ReferralRequest) },
                { "RelatedPerson", typeof(Hl7.Fhir.Model.RelatedPerson) },
                { "Resource", typeof(Hl7.Fhir.Model.Resource) },
                { "RiskAssessment", typeof(Hl7.Fhir.Model.RiskAssessment) },
                { "Schedule", typeof(Hl7.Fhir.Model.Schedule) },
                { "SearchParameter", typeof(Hl7.Fhir.Model.SearchParameter) },
                { "Slot", typeof(Hl7.Fhir.Model.Slot) },
                { "Specimen", typeof(Hl7.Fhir.Model.Specimen) },
                { "StructureDefinition", typeof(Hl7.Fhir.Model.StructureDefinition) },
                { "Subscription", typeof(Hl7.Fhir.Model.Subscription) },
                { "Substance", typeof(Hl7.Fhir.Model.Substance) },
                { "SupplyDelivery", typeof(Hl7.Fhir.Model.SupplyDelivery) },
                { "SupplyRequest", typeof(Hl7.Fhir.Model.SupplyRequest) },
                { "TestScript", typeof(Hl7.Fhir.Model.TestScript) },
                { "ValueSet", typeof(Hl7.Fhir.Model.ValueSet) },
                { "VisionPrescription", typeof(Hl7.Fhir.Model.VisionPrescription) },
            };
        
        public static Dictionary<Type,string> FhirCsTypeToString =
            new Dictionary<Type,string>()
            {
                { typeof(Hl7.Fhir.Model.Address), "Address" },
                { typeof(Age), "Age" },
                { typeof(Hl7.Fhir.Model.Annotation), "Annotation" },
                { typeof(Hl7.Fhir.Model.Attachment), "Attachment" },
                { typeof(BackboneElement), "BackboneElement" },
                { typeof(Hl7.Fhir.Model.Base64Binary), "base64Binary" },
                { typeof(Hl7.Fhir.Model.FhirBoolean), "boolean" },
                { typeof(Hl7.Fhir.Model.Code), "code" },
                { typeof(Hl7.Fhir.Model.CodeableConcept), "CodeableConcept" },
                { typeof(Hl7.Fhir.Model.Coding), "Coding" },
                { typeof(Hl7.Fhir.Model.ContactPoint), "ContactPoint" },
                { typeof(Count), "Count" },
                { typeof(Hl7.Fhir.Model.Date), "date" },
                { typeof(Hl7.Fhir.Model.FhirDateTime), "dateTime" },
                { typeof(Hl7.Fhir.Model.FhirDecimal), "decimal" },
                { typeof(Distance), "Distance" },
                { typeof(Duration), "Duration" },
                { typeof(Element), "Element" },
                { typeof(Hl7.Fhir.Model.ElementDefinition), "ElementDefinition" },
                { typeof(Hl7.Fhir.Model.Extension), "Extension" },
                { typeof(Hl7.Fhir.Model.HumanName), "HumanName" },
                { typeof(Hl7.Fhir.Model.Id), "id" },
                { typeof(Hl7.Fhir.Model.Identifier), "Identifier" },
                { typeof(Hl7.Fhir.Model.Instant), "instant" },
                { typeof(Hl7.Fhir.Model.Integer), "integer" },
                { typeof(Hl7.Fhir.Model.Markdown), "markdown" },
                { typeof(Hl7.Fhir.Model.Meta), "Meta" },
                { typeof(Money), "Money" },
                { typeof(Narrative), "Narrative" },
                { typeof(Hl7.Fhir.Model.Oid), "oid" },
                { typeof(Hl7.Fhir.Model.Period), "Period" },
                { typeof(Hl7.Fhir.Model.PositiveInt), "positiveInt" },
                { typeof(Quantity), "Quantity" },
                { typeof(Hl7.Fhir.Model.Range), "Range" },
                { typeof(Hl7.Fhir.Model.Ratio), "Ratio" },
                { typeof(Hl7.Fhir.Model.ResourceReference), "Reference" },
                { typeof(Hl7.Fhir.Model.SampledData), "SampledData" },
                { typeof(Hl7.Fhir.Model.Signature), "Signature" },
                { typeof(SimpleQuantity), "SimpleQuantity" },
                { typeof(Hl7.Fhir.Model.FhirString), "string" },
                { typeof(Hl7.Fhir.Model.Time), "time" },
                { typeof(Hl7.Fhir.Model.Timing), "Timing" },
                { typeof(Hl7.Fhir.Model.UnsignedInt), "unsignedInt" },
                { typeof(Hl7.Fhir.Model.FhirUri), "uri" },
                { typeof(Hl7.Fhir.Model.Uuid), "uuid" },
                { typeof(Hl7.Fhir.Model.XHtml), "xhtml" },

                { typeof(Hl7.Fhir.Model.Account), "Account" },
                { typeof(Hl7.Fhir.Model.AllergyIntolerance), "AllergyIntolerance" },
                { typeof(Hl7.Fhir.Model.Appointment), "Appointment" },
                { typeof(Hl7.Fhir.Model.AppointmentResponse), "AppointmentResponse" },
                { typeof(Hl7.Fhir.Model.AuditEvent), "AuditEvent" },
                { typeof(Hl7.Fhir.Model.Basic), "Basic" },
                { typeof(Hl7.Fhir.Model.Binary), "Binary" },
                { typeof(Hl7.Fhir.Model.BodySite), "BodySite" },
                { typeof(Hl7.Fhir.Model.Bundle), "Bundle" },
                { typeof(Hl7.Fhir.Model.CarePlan), "CarePlan" },
                { typeof(Hl7.Fhir.Model.Claim), "Claim" },
                { typeof(Hl7.Fhir.Model.ClaimResponse), "ClaimResponse" },
                { typeof(Hl7.Fhir.Model.ClinicalImpression), "ClinicalImpression" },
                { typeof(Hl7.Fhir.Model.Communication), "Communication" },
                { typeof(Hl7.Fhir.Model.CommunicationRequest), "CommunicationRequest" },
                { typeof(Hl7.Fhir.Model.Composition), "Composition" },
                { typeof(Hl7.Fhir.Model.ConceptMap), "ConceptMap" },
                { typeof(Hl7.Fhir.Model.Condition), "Condition" },
                { typeof(Hl7.Fhir.Model.Conformance), "Conformance" },
                { typeof(Hl7.Fhir.Model.Contract), "Contract" },
                { typeof(Hl7.Fhir.Model.Coverage), "Coverage" },
                { typeof(Hl7.Fhir.Model.DataElement), "DataElement" },
                { typeof(Hl7.Fhir.Model.DetectedIssue), "DetectedIssue" },
                { typeof(Hl7.Fhir.Model.Device), "Device" },
                { typeof(Hl7.Fhir.Model.DeviceComponent), "DeviceComponent" },
                { typeof(Hl7.Fhir.Model.DeviceMetric), "DeviceMetric" },
                { typeof(Hl7.Fhir.Model.DeviceUseRequest), "DeviceUseRequest" },
                { typeof(Hl7.Fhir.Model.DeviceUseStatement), "DeviceUseStatement" },
                { typeof(Hl7.Fhir.Model.DiagnosticOrder), "DiagnosticOrder" },
                { typeof(Hl7.Fhir.Model.DiagnosticReport), "DiagnosticReport" },
                { typeof(Hl7.Fhir.Model.DocumentManifest), "DocumentManifest" },
                { typeof(Hl7.Fhir.Model.DocumentReference), "DocumentReference" },
                { typeof(Hl7.Fhir.Model.DomainResource), "DomainResource" },
                { typeof(Hl7.Fhir.Model.EligibilityRequest), "EligibilityRequest" },
                { typeof(Hl7.Fhir.Model.EligibilityResponse), "EligibilityResponse" },
                { typeof(Hl7.Fhir.Model.Encounter), "Encounter" },
                { typeof(Hl7.Fhir.Model.EnrollmentRequest), "EnrollmentRequest" },
                { typeof(Hl7.Fhir.Model.EnrollmentResponse), "EnrollmentResponse" },
                { typeof(Hl7.Fhir.Model.EpisodeOfCare), "EpisodeOfCare" },
                { typeof(Hl7.Fhir.Model.ExplanationOfBenefit), "ExplanationOfBenefit" },
                { typeof(Hl7.Fhir.Model.FamilyMemberHistory), "FamilyMemberHistory" },
                { typeof(Hl7.Fhir.Model.Flag), "Flag" },
                { typeof(Hl7.Fhir.Model.Goal), "Goal" },
                { typeof(Hl7.Fhir.Model.Group), "Group" },
                { typeof(Hl7.Fhir.Model.HealthcareService), "HealthcareService" },
                { typeof(Hl7.Fhir.Model.ImagingObjectSelection), "ImagingObjectSelection" },
                { typeof(Hl7.Fhir.Model.ImagingStudy), "ImagingStudy" },
                { typeof(Hl7.Fhir.Model.Immunization), "Immunization" },
                { typeof(Hl7.Fhir.Model.ImmunizationRecommendation), "ImmunizationRecommendation" },
                { typeof(Hl7.Fhir.Model.ImplementationGuide), "ImplementationGuide" },
                { typeof(Hl7.Fhir.Model.List), "List" },
                { typeof(Hl7.Fhir.Model.Location), "Location" },
                { typeof(Hl7.Fhir.Model.Media), "Media" },
                { typeof(Hl7.Fhir.Model.Medication), "Medication" },
                { typeof(Hl7.Fhir.Model.MedicationAdministration), "MedicationAdministration" },
                { typeof(Hl7.Fhir.Model.MedicationDispense), "MedicationDispense" },
                { typeof(Hl7.Fhir.Model.MedicationOrder), "MedicationOrder" },
                { typeof(Hl7.Fhir.Model.MedicationStatement), "MedicationStatement" },
                { typeof(Hl7.Fhir.Model.MessageHeader), "MessageHeader" },
                { typeof(Hl7.Fhir.Model.NamingSystem), "NamingSystem" },
                { typeof(Hl7.Fhir.Model.NutritionOrder), "NutritionOrder" },
                { typeof(Hl7.Fhir.Model.Observation), "Observation" },
                { typeof(Hl7.Fhir.Model.OperationDefinition), "OperationDefinition" },
                { typeof(Hl7.Fhir.Model.OperationOutcome), "OperationOutcome" },
                { typeof(Hl7.Fhir.Model.Order), "Order" },
                { typeof(Hl7.Fhir.Model.OrderResponse), "OrderResponse" },
                { typeof(Hl7.Fhir.Model.Organization), "Organization" },
                { typeof(Hl7.Fhir.Model.Parameters), "Parameters" },
                { typeof(Hl7.Fhir.Model.Patient), "Patient" },
                { typeof(Hl7.Fhir.Model.PaymentNotice), "PaymentNotice" },
                { typeof(Hl7.Fhir.Model.PaymentReconciliation), "PaymentReconciliation" },
                { typeof(Hl7.Fhir.Model.Person), "Person" },
                { typeof(Hl7.Fhir.Model.Practitioner), "Practitioner" },
                { typeof(Hl7.Fhir.Model.Procedure), "Procedure" },
                { typeof(Hl7.Fhir.Model.ProcedureRequest), "ProcedureRequest" },
                { typeof(Hl7.Fhir.Model.ProcessRequest), "ProcessRequest" },
                { typeof(Hl7.Fhir.Model.ProcessResponse), "ProcessResponse" },
                { typeof(Hl7.Fhir.Model.Provenance), "Provenance" },
                { typeof(Hl7.Fhir.Model.Questionnaire), "Questionnaire" },
                { typeof(Hl7.Fhir.Model.QuestionnaireResponse), "QuestionnaireResponse" },
                { typeof(Hl7.Fhir.Model.ReferralRequest), "ReferralRequest" },
                { typeof(Hl7.Fhir.Model.RelatedPerson), "RelatedPerson" },
                { typeof(Hl7.Fhir.Model.Resource), "Resource" },
                { typeof(Hl7.Fhir.Model.RiskAssessment), "RiskAssessment" },
                { typeof(Hl7.Fhir.Model.Schedule), "Schedule" },
                { typeof(Hl7.Fhir.Model.SearchParameter), "SearchParameter" },
                { typeof(Hl7.Fhir.Model.Slot), "Slot" },
                { typeof(Hl7.Fhir.Model.Specimen), "Specimen" },
                { typeof(Hl7.Fhir.Model.StructureDefinition), "StructureDefinition" },
                { typeof(Hl7.Fhir.Model.Subscription), "Subscription" },
                { typeof(Hl7.Fhir.Model.Substance), "Substance" },
                { typeof(Hl7.Fhir.Model.SupplyDelivery), "SupplyDelivery" },
                { typeof(Hl7.Fhir.Model.SupplyRequest), "SupplyRequest" },
                { typeof(Hl7.Fhir.Model.TestScript), "TestScript" },
                { typeof(Hl7.Fhir.Model.ValueSet), "ValueSet" },
                { typeof(Hl7.Fhir.Model.VisionPrescription), "VisionPrescription" },
            };
        
        public static List<SearchParamDefinition> SearchParameters = 
            new List<SearchParamDefinition>
            {
                new SearchParamDefinition() { Resource = "Account", Name = "balance", Description = @"How much is in account?", Type = SearchParamType.Quantity, Path = new string[] { "Account.balance", }, XPath = "f:Account/f:balance", Expression = "Account.balance" },
                new SearchParamDefinition() { Resource = "Account", Name = "identifier", Description = @"Account number", Type = SearchParamType.Token, Path = new string[] { "Account.identifier", }, XPath = "f:Account/f:identifier", Expression = "Account.identifier" },
                new SearchParamDefinition() { Resource = "Account", Name = "name", Description = @"Human-readable label", Type = SearchParamType.String, Path = new string[] { "Account.name", }, XPath = "f:Account/f:name", Expression = "Account.name" },
                new SearchParamDefinition() { Resource = "Account", Name = "owner", Description = @"Who is responsible?", Type = SearchParamType.Reference, Path = new string[] { "Account.owner", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Account/f:owner", Expression = "Account.owner" },
                new SearchParamDefinition() { Resource = "Account", Name = "patient", Description = @"What is account tied to?", Type = SearchParamType.Reference, Path = new string[] { "Account.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Account/f:subject", Expression = "Account.subject" },
                new SearchParamDefinition() { Resource = "Account", Name = "period", Description = @"Transaction window", Type = SearchParamType.Date, Path = new string[] { "Account.coveragePeriod", }, XPath = "f:Account/f:coveragePeriod", Expression = "Account.coveragePeriod" },
                new SearchParamDefinition() { Resource = "Account", Name = "status", Description = @"active | inactive", Type = SearchParamType.Token, Path = new string[] { "Account.status", }, XPath = "f:Account/f:status", Expression = "Account.status" },
                new SearchParamDefinition() { Resource = "Account", Name = "subject", Description = @"What is account tied to?", Type = SearchParamType.Reference, Path = new string[] { "Account.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.HealthcareService, ResourceType.Location, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:Account/f:subject", Expression = "Account.subject" },
                new SearchParamDefinition() { Resource = "Account", Name = "type", Description = @"E.g. patient, expense, depreciation", Type = SearchParamType.Token, Path = new string[] { "Account.type", }, XPath = "f:Account/f:type", Expression = "Account.type" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "category", Description = @"food | medication | environment | other - Category of Substance", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.category", }, XPath = "f:AllergyIntolerance/f:category", Expression = "AllergyIntolerance.category" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "criticality", Description = @"CRITL | CRITH | CRITU", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.criticality", }, XPath = "f:AllergyIntolerance/f:criticality", Expression = "AllergyIntolerance.criticality" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "date", Description = @"When recorded", Type = SearchParamType.Date, Path = new string[] { "AllergyIntolerance.recordedDate", }, XPath = "f:AllergyIntolerance/f:recordedDate", Expression = "AllergyIntolerance.recordedDate" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "identifier", Description = @"External ids for this item", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.identifier", }, XPath = "f:AllergyIntolerance/f:identifier", Expression = "AllergyIntolerance.identifier" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "last-date", Description = @"Date(/time) of last known occurrence of a reaction", Type = SearchParamType.Date, Path = new string[] { "AllergyIntolerance.lastOccurence", }, XPath = "f:AllergyIntolerance/f:lastOccurence", Expression = "AllergyIntolerance.lastOccurence" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "manifestation", Description = @"Clinical symptoms/signs associated with the Event", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.reaction.manifestation", }, XPath = "f:AllergyIntolerance/f:reaction/f:manifestation", Expression = "AllergyIntolerance.reaction.manifestation" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "onset", Description = @"Date(/time) when manifestations showed", Type = SearchParamType.Date, Path = new string[] { "AllergyIntolerance.reaction.onset", }, XPath = "f:AllergyIntolerance/f:reaction/f:onset", Expression = "AllergyIntolerance.reaction.onset" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "patient", Description = @"Who the sensitivity is for", Type = SearchParamType.Reference, Path = new string[] { "AllergyIntolerance.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:AllergyIntolerance/f:patient", Expression = "AllergyIntolerance.patient" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "recorder", Description = @"Who recorded the sensitivity", Type = SearchParamType.Reference, Path = new string[] { "AllergyIntolerance.recorder", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:AllergyIntolerance/f:recorder", Expression = "AllergyIntolerance.recorder" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "reporter", Description = @"Source of the information about the allergy", Type = SearchParamType.Reference, Path = new string[] { "AllergyIntolerance.reporter", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:AllergyIntolerance/f:reporter", Expression = "AllergyIntolerance.reporter" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "route", Description = @"How the subject was exposed to the substance", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.reaction.exposureRoute", }, XPath = "f:AllergyIntolerance/f:reaction/f:exposureRoute", Expression = "AllergyIntolerance.reaction.exposureRoute" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "severity", Description = @"mild | moderate | severe (of event as a whole)", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.reaction.severity", }, XPath = "f:AllergyIntolerance/f:reaction/f:severity", Expression = "AllergyIntolerance.reaction.severity" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "status", Description = @"active | unconfirmed | confirmed | inactive | resolved | refuted | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.status", }, XPath = "f:AllergyIntolerance/f:status", Expression = "AllergyIntolerance.status" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "substance", Description = @"Substance, (or class) considered to be responsible for risk", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.substance", "AllergyIntolerance.reaction.substance", }, XPath = "f:AllergyIntolerance/f:substance | f:AllergyIntolerance/f:reaction/f:substance", Expression = "AllergyIntolerance.substance | AllergyIntolerance.reaction.substance" },
                new SearchParamDefinition() { Resource = "AllergyIntolerance", Name = "type", Description = @"allergy | intolerance - Underlying mechanism (if known)", Type = SearchParamType.Token, Path = new string[] { "AllergyIntolerance.type", }, XPath = "f:AllergyIntolerance/f:type", Expression = "AllergyIntolerance.type" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "actor", Description = @"Any one of the individuals participating in the appointment", Type = SearchParamType.Reference, Path = new string[] { "Appointment.participant.actor", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.HealthcareService, ResourceType.Location, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Appointment/f:participant/f:actor", Expression = "Appointment.participant.actor" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "date", Description = @"Appointment date/time.", Type = SearchParamType.Date, Path = new string[] { "Appointment.start", }, XPath = "f:Appointment/f:start", Expression = "Appointment.start" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "identifier", Description = @"An Identifier of the Appointment", Type = SearchParamType.Token, Path = new string[] { "Appointment.identifier", }, XPath = "f:Appointment/f:identifier", Expression = "Appointment.identifier" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "location", Description = @"This location is listed in the participants of the appointment", Type = SearchParamType.Reference, Path = new string[] { "Appointment.participant.actor", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Appointment/f:participant/f:actor", Expression = "Appointment.participant.actor" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "part-status", Description = @"The Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests.", Type = SearchParamType.Token, Path = new string[] { "Appointment.participant.status", }, XPath = "f:Appointment/f:participant/f:status", Expression = "Appointment.participant.status" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "patient", Description = @"One of the individuals of the appointment is this patient", Type = SearchParamType.Reference, Path = new string[] { "Appointment.participant.actor", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Appointment/f:participant/f:actor", Expression = "Appointment.participant.actor" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "practitioner", Description = @"One of the individuals of the appointment is this practitioner", Type = SearchParamType.Reference, Path = new string[] { "Appointment.participant.actor", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Appointment/f:participant/f:actor", Expression = "Appointment.participant.actor" },
                new SearchParamDefinition() { Resource = "Appointment", Name = "status", Description = @"The overall status of the appointment", Type = SearchParamType.Token, Path = new string[] { "Appointment.status", }, XPath = "f:Appointment/f:status", Expression = "Appointment.status" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "actor", Description = @"The Person, Location/HealthcareService or Device that this appointment response replies for", Type = SearchParamType.Reference, Path = new string[] { "AppointmentResponse.actor", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.HealthcareService, ResourceType.Location, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:AppointmentResponse/f:actor", Expression = "AppointmentResponse.actor" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "appointment", Description = @"The appointment that the response is attached to", Type = SearchParamType.Reference, Path = new string[] { "AppointmentResponse.appointment", }, Target = new ResourceType[] { ResourceType.Appointment, }, XPath = "f:AppointmentResponse/f:appointment", Expression = "AppointmentResponse.appointment" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "identifier", Description = @"An Identifier in this appointment response", Type = SearchParamType.Token, Path = new string[] { "AppointmentResponse.identifier", }, XPath = "f:AppointmentResponse/f:identifier", Expression = "AppointmentResponse.identifier" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "location", Description = @"This Response is for this Location", Type = SearchParamType.Reference, Path = new string[] { "AppointmentResponse.actor", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:AppointmentResponse/f:actor", Expression = "AppointmentResponse.actor" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "part-status", Description = @"The participants acceptance status for this appointment", Type = SearchParamType.Token, Path = new string[] { "AppointmentResponse.participantStatus", }, XPath = "f:AppointmentResponse/f:participantStatus", Expression = "AppointmentResponse.participantStatus" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "patient", Description = @"This Response is for this Patient", Type = SearchParamType.Reference, Path = new string[] { "AppointmentResponse.actor", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:AppointmentResponse/f:actor", Expression = "AppointmentResponse.actor" },
                new SearchParamDefinition() { Resource = "AppointmentResponse", Name = "practitioner", Description = @"This Response is for this Practitioner", Type = SearchParamType.Reference, Path = new string[] { "AppointmentResponse.actor", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:AppointmentResponse/f:actor", Expression = "AppointmentResponse.actor" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "action", Description = @"Type of action performed during the event", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.event.action", }, XPath = "f:AuditEvent/f:event/f:action", Expression = "AuditEvent.event.action" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "address", Description = @"Identifier for the network access point of the user device", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.participant.network.address", }, XPath = "f:AuditEvent/f:participant/f:network/f:address", Expression = "AuditEvent.participant.network.address" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "altid", Description = @"Alternative User id e.g. authentication", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.participant.altId", }, XPath = "f:AuditEvent/f:participant/f:altId", Expression = "AuditEvent.participant.altId" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "date", Description = @"Time when the event occurred on source", Type = SearchParamType.Date, Path = new string[] { "AuditEvent.event.dateTime", }, XPath = "f:AuditEvent/f:event/f:dateTime", Expression = "AuditEvent.event.dateTime" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "desc", Description = @"Instance-specific descriptor for Object", Type = SearchParamType.String, Path = new string[] { "AuditEvent.object.name", }, XPath = "f:AuditEvent/f:object/f:name", Expression = "AuditEvent.object.name" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "identity", Description = @"Specific instance of object (e.g. versioned)", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.object.identifier", }, XPath = "f:AuditEvent/f:object/f:identifier", Expression = "AuditEvent.object.identifier" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "name", Description = @"Human-meaningful name for the user", Type = SearchParamType.String, Path = new string[] { "AuditEvent.participant.name", }, XPath = "f:AuditEvent/f:participant/f:name", Expression = "AuditEvent.participant.name" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "object-type", Description = @"Type of object involved", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.object.type", }, XPath = "f:AuditEvent/f:object/f:type", Expression = "AuditEvent.object.type" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "participant", Description = @"Direct reference to resource", Type = SearchParamType.Reference, Path = new string[] { "AuditEvent.participant.reference", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:AuditEvent/f:participant/f:reference", Expression = "AuditEvent.participant.reference" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "patient", Description = @"Direct reference to resource", Type = SearchParamType.Reference, Path = new string[] { "AuditEvent.participant.reference", "AuditEvent.object.reference", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:AuditEvent/f:participant/f:reference | f:AuditEvent/f:object/f:reference", Expression = "AuditEvent.participant.reference | AuditEvent.object.reference" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "policy", Description = @"Policy that authorized event", Type = SearchParamType.Uri, Path = new string[] { "AuditEvent.participant.policy", }, XPath = "f:AuditEvent/f:participant/f:policy", Expression = "AuditEvent.participant.policy" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "reference", Description = @"Specific instance of resource (e.g. versioned)", Type = SearchParamType.Reference, Path = new string[] { "AuditEvent.object.reference", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:AuditEvent/f:object/f:reference", Expression = "AuditEvent.object.reference" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "site", Description = @"Logical source location within the enterprise", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.source.site", }, XPath = "f:AuditEvent/f:source/f:site", Expression = "AuditEvent.source.site" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "source", Description = @"The identity of source detecting the event", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.source.identifier", }, XPath = "f:AuditEvent/f:source/f:identifier", Expression = "AuditEvent.source.identifier" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "subtype", Description = @"More specific type/id for the event", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.event.subtype", }, XPath = "f:AuditEvent/f:event/f:subtype", Expression = "AuditEvent.event.subtype" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "type", Description = @"Type/identifier of event", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.event.type", }, XPath = "f:AuditEvent/f:event/f:type", Expression = "AuditEvent.event.type" },
                new SearchParamDefinition() { Resource = "AuditEvent", Name = "user", Description = @"Unique identifier for the user", Type = SearchParamType.Token, Path = new string[] { "AuditEvent.participant.userId", }, XPath = "f:AuditEvent/f:participant/f:userId", Expression = "AuditEvent.participant.userId" },
                new SearchParamDefinition() { Resource = "Basic", Name = "author", Description = @"Who created", Type = SearchParamType.Reference, Path = new string[] { "Basic.author", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Basic/f:author", Expression = "Basic.author" },
                new SearchParamDefinition() { Resource = "Basic", Name = "code", Description = @"Kind of Resource", Type = SearchParamType.Token, Path = new string[] { "Basic.code", }, XPath = "f:Basic/f:code", Expression = "Basic.code" },
                new SearchParamDefinition() { Resource = "Basic", Name = "created", Description = @"When created", Type = SearchParamType.Date, Path = new string[] { "Basic.created", }, XPath = "f:Basic/f:created", Expression = "Basic.created" },
                new SearchParamDefinition() { Resource = "Basic", Name = "identifier", Description = @"Business identifier", Type = SearchParamType.Token, Path = new string[] { "Basic.identifier", }, XPath = "f:Basic/f:identifier", Expression = "Basic.identifier" },
                new SearchParamDefinition() { Resource = "Basic", Name = "patient", Description = @"Identifies the focus of this resource", Type = SearchParamType.Reference, Path = new string[] { "Basic.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Basic/f:subject", Expression = "Basic.subject" },
                new SearchParamDefinition() { Resource = "Basic", Name = "subject", Description = @"Identifies the focus of this resource", Type = SearchParamType.Reference, Path = new string[] { "Basic.subject", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:Basic/f:subject", Expression = "Basic.subject" },
                new SearchParamDefinition() { Resource = "Basic", Name = "description", Description = @"Text search against the description", Type = SearchParamType.String, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "identifier", Description = @"Logical identifier for the module (e.g. CMS-143)", Type = SearchParamType.Token, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "keyword", Description = @"Keywords associated with the module", Type = SearchParamType.String, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "minScore", Description = @"The minimum relevance score of any match that will be returned", Type = SearchParamType.Number, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "status", Description = @"Status of the module", Type = SearchParamType.Token, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "title", Description = @"Text search against the title", Type = SearchParamType.String, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "topic", Description = @"Topics associated with the module", Type = SearchParamType.Token, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Basic", Name = "version", Description = @"Version of the module (e.g. 1.0.0)", Type = SearchParamType.String, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Binary", Name = "contenttype", Description = @"MimeType of the binary content", Type = SearchParamType.Token, Path = new string[] { "Binary.contentType", }, XPath = "f:Binary/f:contentType", Expression = "Binary.contentType" },
                new SearchParamDefinition() { Resource = "BodySite", Name = "code", Description = @"Named anatomical location", Type = SearchParamType.Token, Path = new string[] { "BodySite.code", }, XPath = "f:BodySite/f:code", Expression = "BodySite.code" },
                new SearchParamDefinition() { Resource = "BodySite", Name = "identifier", Description = @"Identifier for this instance of the anatomical location", Type = SearchParamType.Token, Path = new string[] { "BodySite.identifier", }, XPath = "f:BodySite/f:identifier", Expression = "BodySite.identifier" },
                new SearchParamDefinition() { Resource = "BodySite", Name = "patient", Description = @"Patient to whom bodysite belongs", Type = SearchParamType.Reference, Path = new string[] { "BodySite.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:BodySite/f:patient", Expression = "BodySite.patient" },
                new SearchParamDefinition() { Resource = "Bundle", Name = "composition", Description = @"The first resource in the bundle, if the bundle type is ""document"" - this is a composition, and this parameter provides access to searches its contents", Type = SearchParamType.Reference, Path = new string[] { "Bundle.entry.resource[0]", }, Target = new ResourceType[] { ResourceType.Composition, }, XPath = "f:Bundle/f:entry/f:resource[0]", Expression = "Bundle.entry.resource[0]" },
                new SearchParamDefinition() { Resource = "Bundle", Name = "message", Description = @"The first resource in the bundle, if the bundle type is ""message"" - this is a message header, and this parameter provides access to search its contents", Type = SearchParamType.Reference, Path = new string[] { "Bundle.entry.resource[0]", }, Target = new ResourceType[] { ResourceType.MessageHeader, }, XPath = "f:Bundle/f:entry/f:resource[0]", Expression = "Bundle.entry.resource[0]" },
                new SearchParamDefinition() { Resource = "Bundle", Name = "type", Description = @"document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection", Type = SearchParamType.Token, Path = new string[] { "Bundle.type", }, XPath = "f:Bundle/f:type", Expression = "Bundle.type" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "activitycode", Description = @"Detail type of activity", Type = SearchParamType.Token, Path = new string[] { "CarePlan.activity.detail.code", }, XPath = "f:CarePlan/f:activity/f:detail/f:code", Expression = "CarePlan.activity.detail.code" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "activitydate", Description = @"Specified date occurs within period specified by CarePlan.activity.timingSchedule", Type = SearchParamType.Date, Path = new string[] { "CarePlan.activity.detail.scheduledTiming", "CarePlan.activity.detail.scheduledPeriod", "CarePlan.activity.detail.scheduledString", }, XPath = "f:CarePlan/f:activity/f:detail/f:scheduledTiming | f:CarePlan/f:activity/f:detail/f:scheduledPeriod | f:CarePlan/f:activity/f:detail/f:scheduledString", Expression = "CarePlan.activity.detail.scheduled" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "activityreference", Description = @"Activity details defined in specific resource", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.activity.reference", }, Target = new ResourceType[] { ResourceType.Appointment, ResourceType.CommunicationRequest, ResourceType.DeviceUseRequest, ResourceType.DiagnosticOrder, ResourceType.MedicationOrder, ResourceType.NutritionOrder, ResourceType.Order, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ReferralRequest, ResourceType.SupplyRequest, ResourceType.VisionPrescription, }, XPath = "f:CarePlan/f:activity/f:reference", Expression = "CarePlan.activity.reference" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "condition", Description = @"Health issues this plan addresses", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.addresses", }, Target = new ResourceType[] { ResourceType.Condition, }, XPath = "f:CarePlan/f:addresses", Expression = "CarePlan.addresses" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "date", Description = @"Time period plan covers", Type = SearchParamType.Date, Path = new string[] { "CarePlan.period", }, XPath = "f:CarePlan/f:period", Expression = "CarePlan.period" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "goal", Description = @"Desired outcome of plan", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.goal", }, Target = new ResourceType[] { ResourceType.Goal, }, XPath = "f:CarePlan/f:goal", Expression = "CarePlan.goal" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "participant", Description = @"Who is involved", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.participant.member", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:CarePlan/f:participant/f:member", Expression = "CarePlan.participant.member" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "patient", Description = @"Who care plan is for", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:CarePlan/f:subject", Expression = "CarePlan.subject" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "performer", Description = @"Matches if the practitioner is listed as a performer in any of the ""simple"" activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.activity.detail.performer", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:CarePlan/f:activity/f:detail/f:performer", Expression = "CarePlan.activity.detail.performer" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "related", Description = @"A combination of the type of relationship and the related plan", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "relatedcode", Description = @"includes | replaces | fulfills", Type = SearchParamType.Token, Path = new string[] { "CarePlan.relatedPlan.code", }, XPath = "f:CarePlan/f:relatedPlan/f:code", Expression = "CarePlan.relatedPlan.code" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "relatedplan", Description = @"Plan relationship exists with", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.relatedPlan.plan", }, Target = new ResourceType[] { ResourceType.CarePlan, }, XPath = "f:CarePlan/f:relatedPlan/f:plan", Expression = "CarePlan.relatedPlan.plan" },
                new SearchParamDefinition() { Resource = "CarePlan", Name = "subject", Description = @"Who care plan is for", Type = SearchParamType.Reference, Path = new string[] { "CarePlan.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Patient, }, XPath = "f:CarePlan/f:subject", Expression = "CarePlan.subject" },
                new SearchParamDefinition() { Resource = "Claim", Name = "identifier", Description = @"The primary identifier of the financial resource", Type = SearchParamType.Token, Path = new string[] { "Claim.identifier", }, XPath = "f:Claim/f:identifier", Expression = "Claim.identifier" },
                new SearchParamDefinition() { Resource = "Claim", Name = "patient", Description = @"Patient", Type = SearchParamType.Reference, Path = new string[] { "Claim.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Claim/f:patient", Expression = "Claim.patient" },
                new SearchParamDefinition() { Resource = "Claim", Name = "priority", Description = @"Processing priority requested", Type = SearchParamType.Token, Path = new string[] { "Claim.priority", }, XPath = "f:Claim/f:priority", Expression = "Claim.priority" },
                new SearchParamDefinition() { Resource = "Claim", Name = "provider", Description = @"Provider responsible for the claim", Type = SearchParamType.Reference, Path = new string[] { "Claim.provider", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Claim/f:provider", Expression = "Claim.provider" },
                new SearchParamDefinition() { Resource = "Claim", Name = "use", Description = @"The kind of financial resource", Type = SearchParamType.Token, Path = new string[] { "Claim.use", }, XPath = "f:Claim/f:use", Expression = "Claim.use" },
                new SearchParamDefinition() { Resource = "ClaimResponse", Name = "identifier", Description = @"The identity of the insurer", Type = SearchParamType.Token, Path = new string[] { "ClaimResponse.identifier", }, XPath = "f:ClaimResponse/f:identifier", Expression = "ClaimResponse.identifier" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "action", Description = @"Actions taken during assessment", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.action", }, Target = new ResourceType[] { ResourceType.Appointment, ResourceType.DiagnosticOrder, ResourceType.MedicationOrder, ResourceType.NutritionOrder, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ReferralRequest, ResourceType.SupplyRequest, }, XPath = "f:ClinicalImpression/f:action", Expression = "ClinicalImpression.action" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "assessor", Description = @"The clinician performing the assessment", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.assessor", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:ClinicalImpression/f:assessor", Expression = "ClinicalImpression.assessor" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "date", Description = @"When the assessment occurred", Type = SearchParamType.Date, Path = new string[] { "ClinicalImpression.date", }, XPath = "f:ClinicalImpression/f:date", Expression = "ClinicalImpression.date" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "finding", Description = @"Specific text or code for finding", Type = SearchParamType.Token, Path = new string[] { "ClinicalImpression.finding.item", }, XPath = "f:ClinicalImpression/f:finding/f:item", Expression = "ClinicalImpression.finding.item" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "investigation", Description = @"Record of a specific investigation", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.investigations.item", }, Target = new ResourceType[] { ResourceType.DiagnosticReport, ResourceType.FamilyMemberHistory, ResourceType.Observation, ResourceType.QuestionnaireResponse, }, XPath = "f:ClinicalImpression/f:investigations/f:item", Expression = "ClinicalImpression.investigations.item" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "patient", Description = @"The patient being assessed", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ClinicalImpression/f:patient", Expression = "ClinicalImpression.patient" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "plan", Description = @"Plan of action after assessment", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.plan", }, Target = new ResourceType[] { ResourceType.Appointment, ResourceType.CarePlan, ResourceType.CommunicationRequest, ResourceType.DeviceUseRequest, ResourceType.DiagnosticOrder, ResourceType.MedicationOrder, ResourceType.NutritionOrder, ResourceType.Order, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ReferralRequest, ResourceType.SupplyRequest, ResourceType.VisionPrescription, }, XPath = "f:ClinicalImpression/f:plan", Expression = "ClinicalImpression.plan" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "previous", Description = @"Reference to last assessment", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.previous", }, Target = new ResourceType[] { ResourceType.ClinicalImpression, }, XPath = "f:ClinicalImpression/f:previous", Expression = "ClinicalImpression.previous" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "problem", Description = @"General assessment of patient state", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.problem", }, Target = new ResourceType[] { ResourceType.AllergyIntolerance, ResourceType.Condition, }, XPath = "f:ClinicalImpression/f:problem", Expression = "ClinicalImpression.problem" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "resolved", Description = @"Diagnoses/conditions resolved since previous assessment", Type = SearchParamType.Token, Path = new string[] { "ClinicalImpression.resolved", }, XPath = "f:ClinicalImpression/f:resolved", Expression = "ClinicalImpression.resolved" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "ruledout", Description = @"Specific text of code for diagnosis", Type = SearchParamType.Token, Path = new string[] { "ClinicalImpression.ruledOut.item", }, XPath = "f:ClinicalImpression/f:ruledOut/f:item", Expression = "ClinicalImpression.ruledOut.item" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "status", Description = @"in-progress | completed | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "ClinicalImpression.status", }, XPath = "f:ClinicalImpression/f:status", Expression = "ClinicalImpression.status" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "trigger", Description = @"Request or event that necessitated this assessment", Type = SearchParamType.Reference, Path = new string[] { "ClinicalImpression.triggerReference", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:ClinicalImpression/f:triggerReference", Expression = "ClinicalImpression.triggerReference" },
                new SearchParamDefinition() { Resource = "ClinicalImpression", Name = "trigger-code", Description = @"Request or event that necessitated this assessment", Type = SearchParamType.Token, Path = new string[] { "ClinicalImpression.triggerCodeableConcept", }, XPath = "f:ClinicalImpression/f:triggerCodeableConcept", Expression = "ClinicalImpression.triggerCodeableConcept" },
                new SearchParamDefinition() { Resource = "Communication", Name = "category", Description = @"Message category", Type = SearchParamType.Token, Path = new string[] { "Communication.category", }, XPath = "f:Communication/f:category", Expression = "Communication.category" },
                new SearchParamDefinition() { Resource = "Communication", Name = "encounter", Description = @"Encounter leading to message", Type = SearchParamType.Reference, Path = new string[] { "Communication.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Communication/f:encounter", Expression = "Communication.encounter" },
                new SearchParamDefinition() { Resource = "Communication", Name = "identifier", Description = @"Unique identifier", Type = SearchParamType.Token, Path = new string[] { "Communication.identifier", }, XPath = "f:Communication/f:identifier", Expression = "Communication.identifier" },
                new SearchParamDefinition() { Resource = "Communication", Name = "medium", Description = @"A channel of communication", Type = SearchParamType.Token, Path = new string[] { "Communication.medium", }, XPath = "f:Communication/f:medium", Expression = "Communication.medium" },
                new SearchParamDefinition() { Resource = "Communication", Name = "patient", Description = @"Focus of message", Type = SearchParamType.Reference, Path = new string[] { "Communication.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Communication/f:subject", Expression = "Communication.subject" },
                new SearchParamDefinition() { Resource = "Communication", Name = "received", Description = @"When received", Type = SearchParamType.Date, Path = new string[] { "Communication.received", }, XPath = "f:Communication/f:received", Expression = "Communication.received" },
                new SearchParamDefinition() { Resource = "Communication", Name = "recipient", Description = @"Message recipient", Type = SearchParamType.Reference, Path = new string[] { "Communication.recipient", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Communication/f:recipient", Expression = "Communication.recipient" },
                new SearchParamDefinition() { Resource = "Communication", Name = "request", Description = @"CommunicationRequest producing this message", Type = SearchParamType.Reference, Path = new string[] { "Communication.requestDetail", }, Target = new ResourceType[] { ResourceType.CommunicationRequest, }, XPath = "f:Communication/f:requestDetail", Expression = "Communication.requestDetail" },
                new SearchParamDefinition() { Resource = "Communication", Name = "sender", Description = @"Message sender", Type = SearchParamType.Reference, Path = new string[] { "Communication.sender", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Communication/f:sender", Expression = "Communication.sender" },
                new SearchParamDefinition() { Resource = "Communication", Name = "sent", Description = @"When sent", Type = SearchParamType.Date, Path = new string[] { "Communication.sent", }, XPath = "f:Communication/f:sent", Expression = "Communication.sent" },
                new SearchParamDefinition() { Resource = "Communication", Name = "status", Description = @"in-progress | completed | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "Communication.status", }, XPath = "f:Communication/f:status", Expression = "Communication.status" },
                new SearchParamDefinition() { Resource = "Communication", Name = "subject", Description = @"Focus of message", Type = SearchParamType.Reference, Path = new string[] { "Communication.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Communication/f:subject", Expression = "Communication.subject" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "category", Description = @"Message category", Type = SearchParamType.Token, Path = new string[] { "CommunicationRequest.category", }, XPath = "f:CommunicationRequest/f:category", Expression = "CommunicationRequest.category" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "encounter", Description = @"Encounter leading to message", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:CommunicationRequest/f:encounter", Expression = "CommunicationRequest.encounter" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "identifier", Description = @"Unique identifier", Type = SearchParamType.Token, Path = new string[] { "CommunicationRequest.identifier", }, XPath = "f:CommunicationRequest/f:identifier", Expression = "CommunicationRequest.identifier" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "medium", Description = @"A channel of communication", Type = SearchParamType.Token, Path = new string[] { "CommunicationRequest.medium", }, XPath = "f:CommunicationRequest/f:medium", Expression = "CommunicationRequest.medium" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "patient", Description = @"Focus of message", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:CommunicationRequest/f:subject", Expression = "CommunicationRequest.subject" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "priority", Description = @"Message urgency", Type = SearchParamType.Token, Path = new string[] { "CommunicationRequest.priority", }, XPath = "f:CommunicationRequest/f:priority", Expression = "CommunicationRequest.priority" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "recipient", Description = @"Message recipient", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.recipient", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:CommunicationRequest/f:recipient", Expression = "CommunicationRequest.recipient" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "requested", Description = @"When ordered or proposed", Type = SearchParamType.Date, Path = new string[] { "CommunicationRequest.requestedOn", }, XPath = "f:CommunicationRequest/f:requestedOn", Expression = "CommunicationRequest.requestedOn" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "requester", Description = @"An individual who requested a communication", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.requester", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:CommunicationRequest/f:requester", Expression = "CommunicationRequest.requester" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "sender", Description = @"Message sender", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.sender", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:CommunicationRequest/f:sender", Expression = "CommunicationRequest.sender" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "status", Description = @"proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "CommunicationRequest.status", }, XPath = "f:CommunicationRequest/f:status", Expression = "CommunicationRequest.status" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "subject", Description = @"Focus of message", Type = SearchParamType.Reference, Path = new string[] { "CommunicationRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:CommunicationRequest/f:subject", Expression = "CommunicationRequest.subject" },
                new SearchParamDefinition() { Resource = "CommunicationRequest", Name = "time", Description = @"When scheduled", Type = SearchParamType.Date, Path = new string[] { "CommunicationRequest.scheduledDateTime", }, XPath = "f:CommunicationRequest/f:scheduledDateTime", Expression = "CommunicationRequest.scheduledDateTime" },
                new SearchParamDefinition() { Resource = "Composition", Name = "attester", Description = @"Who attested the composition", Type = SearchParamType.Reference, Path = new string[] { "Composition.attester.party", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:Composition/f:attester/f:party", Expression = "Composition.attester.party" },
                new SearchParamDefinition() { Resource = "Composition", Name = "author", Description = @"Who and/or what authored the composition", Type = SearchParamType.Reference, Path = new string[] { "Composition.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Composition/f:author", Expression = "Composition.author" },
                new SearchParamDefinition() { Resource = "Composition", Name = "class", Description = @"Categorization of Composition", Type = SearchParamType.Token, Path = new string[] { "Composition.class", }, XPath = "f:Composition/f:class", Expression = "Composition.class" },
                new SearchParamDefinition() { Resource = "Composition", Name = "confidentiality", Description = @"As defined by affinity domain", Type = SearchParamType.Token, Path = new string[] { "Composition.confidentiality", }, XPath = "f:Composition/f:confidentiality", Expression = "Composition.confidentiality" },
                new SearchParamDefinition() { Resource = "Composition", Name = "context", Description = @"Code(s) that apply to the event being documented", Type = SearchParamType.Token, Path = new string[] { "Composition.event.code", }, XPath = "f:Composition/f:event/f:code", Expression = "Composition.event.code" },
                new SearchParamDefinition() { Resource = "Composition", Name = "date", Description = @"Composition editing time", Type = SearchParamType.Date, Path = new string[] { "Composition.date", }, XPath = "f:Composition/f:date", Expression = "Composition.date" },
                new SearchParamDefinition() { Resource = "Composition", Name = "encounter", Description = @"Context of the Composition", Type = SearchParamType.Reference, Path = new string[] { "Composition.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Composition/f:encounter", Expression = "Composition.encounter" },
                new SearchParamDefinition() { Resource = "Composition", Name = "entry", Description = @"A reference to data that supports this section", Type = SearchParamType.Reference, Path = new string[] { "Composition.section.entry", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:Composition/f:section/f:entry", Expression = "Composition.section.entry" },
                new SearchParamDefinition() { Resource = "Composition", Name = "identifier", Description = @"Logical identifier of composition (version-independent)", Type = SearchParamType.Token, Path = new string[] { "Composition.identifier", }, XPath = "f:Composition/f:identifier", Expression = "Composition.identifier" },
                new SearchParamDefinition() { Resource = "Composition", Name = "patient", Description = @"Who and/or what the composition is about", Type = SearchParamType.Reference, Path = new string[] { "Composition.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Composition/f:subject", Expression = "Composition.subject" },
                new SearchParamDefinition() { Resource = "Composition", Name = "period", Description = @"The period covered by the documentation", Type = SearchParamType.Date, Path = new string[] { "Composition.event.period", }, XPath = "f:Composition/f:event/f:period", Expression = "Composition.event.period" },
                new SearchParamDefinition() { Resource = "Composition", Name = "section", Description = @"Classification of section (recommended)", Type = SearchParamType.Token, Path = new string[] { "Composition.section.code", }, XPath = "f:Composition/f:section/f:code", Expression = "Composition.section.code" },
                new SearchParamDefinition() { Resource = "Composition", Name = "status", Description = @"preliminary | final | amended | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "Composition.status", }, XPath = "f:Composition/f:status", Expression = "Composition.status" },
                new SearchParamDefinition() { Resource = "Composition", Name = "subject", Description = @"Who and/or what the composition is about", Type = SearchParamType.Reference, Path = new string[] { "Composition.subject", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:Composition/f:subject", Expression = "Composition.subject" },
                new SearchParamDefinition() { Resource = "Composition", Name = "title", Description = @"Human Readable name/title", Type = SearchParamType.String, Path = new string[] { "Composition.title", }, XPath = "f:Composition/f:title", Expression = "Composition.title" },
                new SearchParamDefinition() { Resource = "Composition", Name = "type", Description = @"Kind of composition (LOINC if possible)", Type = SearchParamType.Token, Path = new string[] { "Composition.type", }, XPath = "f:Composition/f:type", Expression = "Composition.type" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "context", Description = @"A use context assigned to the concept map", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.useContext", }, XPath = "f:ConceptMap/f:useContext", Expression = "ConceptMap.useContext" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "date", Description = @"The concept map publication date", Type = SearchParamType.Date, Path = new string[] { "ConceptMap.date", }, XPath = "f:ConceptMap/f:date", Expression = "ConceptMap.date" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "dependson", Description = @"Reference to element/field/ValueSet mapping depends on", Type = SearchParamType.Uri, Path = new string[] { "ConceptMap.element.target.dependsOn.element", }, XPath = "f:ConceptMap/f:element/f:target/f:dependsOn/f:element", Expression = "ConceptMap.element.target.dependsOn.element" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "description", Description = @"Text search in the description of the concept map", Type = SearchParamType.String, Path = new string[] { "ConceptMap.description", }, XPath = "f:ConceptMap/f:description", Expression = "ConceptMap.description" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "identifier", Description = @"Additional identifier for the concept map", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.identifier", }, XPath = "f:ConceptMap/f:identifier", Expression = "ConceptMap.identifier" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "name", Description = @"Name of the concept map", Type = SearchParamType.String, Path = new string[] { "ConceptMap.name", }, XPath = "f:ConceptMap/f:name", Expression = "ConceptMap.name" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "product", Description = @"Reference to element/field/ValueSet mapping depends on", Type = SearchParamType.Uri, Path = new string[] { "ConceptMap.element.target.product.element", }, XPath = "f:ConceptMap/f:element/f:target/f:product/f:element", Expression = "ConceptMap.element.target.product.element" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "publisher", Description = @"Name of the publisher of the concept map", Type = SearchParamType.String, Path = new string[] { "ConceptMap.publisher", }, XPath = "f:ConceptMap/f:publisher", Expression = "ConceptMap.publisher" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "source", Description = @"Identifies the source of the concepts which are being mapped", Type = SearchParamType.Reference, Path = new string[] { "ConceptMap.sourceReference", }, Target = new ResourceType[] { ResourceType.StructureDefinition, ResourceType.ValueSet, }, XPath = "f:ConceptMap/f:sourceReference", Expression = "ConceptMap.sourceReference" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "sourcecode", Description = @"Identifies element being mapped", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.element.code", }, XPath = "f:ConceptMap/f:element/f:code", Expression = "ConceptMap.element.code" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "sourcesystem", Description = @"Code System (if value set crosses code systems)", Type = SearchParamType.Uri, Path = new string[] { "ConceptMap.element.codeSystem", }, XPath = "f:ConceptMap/f:element/f:codeSystem", Expression = "ConceptMap.element.codeSystem" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "sourceuri", Description = @"Identifies the source of the concepts which are being mapped", Type = SearchParamType.Reference, Path = new string[] { "ConceptMap.sourceUri", }, Target = new ResourceType[] { ResourceType.StructureDefinition, ResourceType.ValueSet, }, XPath = "f:ConceptMap/f:sourceUri", Expression = "ConceptMap.sourceUri" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "status", Description = @"Status of the concept map", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.status", }, XPath = "f:ConceptMap/f:status", Expression = "ConceptMap.status" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "target", Description = @"Provides context to the mappings", Type = SearchParamType.Reference, Path = new string[] { "ConceptMap.targetUri", "ConceptMap.targetReference", }, Target = new ResourceType[] { ResourceType.StructureDefinition, ResourceType.ValueSet, }, XPath = "f:ConceptMap/f:targetUri | f:ConceptMap/f:targetReference", Expression = "ConceptMap.target" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "targetcode", Description = @"Code that identifies the target element", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.element.target.code", }, XPath = "f:ConceptMap/f:element/f:target/f:code", Expression = "ConceptMap.element.target.code" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "targetsystem", Description = @"System of the target (if necessary)", Type = SearchParamType.Uri, Path = new string[] { "ConceptMap.element.target.codeSystem", }, XPath = "f:ConceptMap/f:element/f:target/f:codeSystem", Expression = "ConceptMap.element.target.codeSystem" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "url", Description = @"The URL of the concept map", Type = SearchParamType.Uri, Path = new string[] { "ConceptMap.url", }, XPath = "f:ConceptMap/f:url", Expression = "ConceptMap.url" },
                new SearchParamDefinition() { Resource = "ConceptMap", Name = "version", Description = @"The version identifier of the concept map", Type = SearchParamType.Token, Path = new string[] { "ConceptMap.version", }, XPath = "f:ConceptMap/f:version", Expression = "ConceptMap.version" },
                new SearchParamDefinition() { Resource = "Condition", Name = "asserter", Description = @"Person who asserts this condition", Type = SearchParamType.Reference, Path = new string[] { "Condition.asserter", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:Condition/f:asserter", Expression = "Condition.asserter" },
                new SearchParamDefinition() { Resource = "Condition", Name = "body-site", Description = @"Anatomical location, if relevant", Type = SearchParamType.Token, Path = new string[] { "Condition.bodySite", }, XPath = "f:Condition/f:bodySite", Expression = "Condition.bodySite" },
                new SearchParamDefinition() { Resource = "Condition", Name = "category", Description = @"The category of the condition", Type = SearchParamType.Token, Path = new string[] { "Condition.category", }, XPath = "f:Condition/f:category", Expression = "Condition.category" },
                new SearchParamDefinition() { Resource = "Condition", Name = "clinicalstatus", Description = @"The clinical status of the condition", Type = SearchParamType.Token, Path = new string[] { "Condition.clinicalStatus", }, XPath = "f:Condition/f:clinicalStatus", Expression = "Condition.clinicalStatus" },
                new SearchParamDefinition() { Resource = "Condition", Name = "code", Description = @"Code for the condition", Type = SearchParamType.Token, Path = new string[] { "Condition.code", }, XPath = "f:Condition/f:code", Expression = "Condition.code" },
                new SearchParamDefinition() { Resource = "Condition", Name = "date-recorded", Description = @"A date, when the Condition statement was documented", Type = SearchParamType.Date, Path = new string[] { "Condition.dateRecorded", }, XPath = "f:Condition/f:dateRecorded", Expression = "Condition.dateRecorded" },
                new SearchParamDefinition() { Resource = "Condition", Name = "encounter", Description = @"Encounter when condition first asserted", Type = SearchParamType.Reference, Path = new string[] { "Condition.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Condition/f:encounter", Expression = "Condition.encounter" },
                new SearchParamDefinition() { Resource = "Condition", Name = "evidence", Description = @"Manifestation/symptom", Type = SearchParamType.Token, Path = new string[] { "Condition.evidence.code", }, XPath = "f:Condition/f:evidence/f:code", Expression = "Condition.evidence.code" },
                new SearchParamDefinition() { Resource = "Condition", Name = "identifier", Description = @"A unique identifier of the condition record", Type = SearchParamType.Token, Path = new string[] { "Condition.identifier", }, XPath = "f:Condition/f:identifier", Expression = "Condition.identifier" },
                new SearchParamDefinition() { Resource = "Condition", Name = "onset", Description = @"Date related onsets (dateTime and Period)", Type = SearchParamType.Date, Path = new string[] { "Condition.onsetDateTime", "Condition.onsetAge", "Condition.onsetPeriod", "Condition.onsetRange", "Condition.onsetString", }, XPath = "f:Condition/f:onsetDateTime | f:Condition/f:onsetAge | f:Condition/f:onsetPeriod | f:Condition/f:onsetRange | f:Condition/f:onsetString", Expression = "Condition.onset" },
                new SearchParamDefinition() { Resource = "Condition", Name = "onset-info", Description = @"Other onsets (boolean, age, range, string)", Type = SearchParamType.String, Path = new string[] { "Condition.onsetDateTime", "Condition.onsetAge", "Condition.onsetPeriod", "Condition.onsetRange", "Condition.onsetString", }, XPath = "f:Condition/f:onsetDateTime | f:Condition/f:onsetAge | f:Condition/f:onsetPeriod | f:Condition/f:onsetRange | f:Condition/f:onsetString", Expression = "Condition.onset" },
                new SearchParamDefinition() { Resource = "Condition", Name = "patient", Description = @"Who has the condition?", Type = SearchParamType.Reference, Path = new string[] { "Condition.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Condition/f:patient", Expression = "Condition.patient" },
                new SearchParamDefinition() { Resource = "Condition", Name = "severity", Description = @"The severity of the condition", Type = SearchParamType.Token, Path = new string[] { "Condition.severity", }, XPath = "f:Condition/f:severity", Expression = "Condition.severity" },
                new SearchParamDefinition() { Resource = "Condition", Name = "stage", Description = @"Simple summary (disease specific)", Type = SearchParamType.Token, Path = new string[] { "Condition.stage.summary", }, XPath = "f:Condition/f:stage/f:summary", Expression = "Condition.stage.summary" },
                new SearchParamDefinition() { Resource = "Condition", Name = "age", Description = @"Search based on Condition onsetAge", Type = SearchParamType.Number, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Conformance", Name = "date", Description = @"The conformance statement publication date", Type = SearchParamType.Date, Path = new string[] { "Conformance.date", }, XPath = "f:Conformance/f:date", Expression = "Conformance.date" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "description", Description = @"Text search in the description of the conformance statement", Type = SearchParamType.String, Path = new string[] { "Conformance.description", }, XPath = "f:Conformance/f:description", Expression = "Conformance.description" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "event", Description = @"Event code in a conformance statement", Type = SearchParamType.Token, Path = new string[] { "Conformance.messaging.event.code", }, XPath = "f:Conformance/f:messaging/f:event/f:code", Expression = "Conformance.messaging.event.code" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "fhirversion", Description = @"The version of FHIR", Type = SearchParamType.Token, Path = new string[] { "Conformance.version", }, XPath = "f:Conformance/f:version", Expression = "Conformance.version" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "format", Description = @"formats supported (xml | json | mime type)", Type = SearchParamType.Token, Path = new string[] { "Conformance.format", }, XPath = "f:Conformance/f:format", Expression = "Conformance.format" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "mode", Description = @"Mode - restful (server/client) or messaging (sender/receiver)", Type = SearchParamType.Token, Path = new string[] { "Conformance.rest.mode", }, XPath = "f:Conformance/f:rest/f:mode", Expression = "Conformance.rest.mode" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "name", Description = @"Name of the conformance statement", Type = SearchParamType.String, Path = new string[] { "Conformance.name", }, XPath = "f:Conformance/f:name", Expression = "Conformance.name" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "profile", Description = @"A profile id invoked in a conformance statement", Type = SearchParamType.Reference, Path = new string[] { "Conformance.rest.resource.profile", }, Target = new ResourceType[] { ResourceType.StructureDefinition, }, XPath = "f:Conformance/f:rest/f:resource/f:profile", Expression = "Conformance.rest.resource.profile" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "publisher", Description = @"Name of the publisher of the conformance statement", Type = SearchParamType.String, Path = new string[] { "Conformance.publisher", }, XPath = "f:Conformance/f:publisher", Expression = "Conformance.publisher" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "resource", Description = @"Name of a resource mentioned in a conformance statement", Type = SearchParamType.Token, Path = new string[] { "Conformance.rest.resource.type", }, XPath = "f:Conformance/f:rest/f:resource/f:type", Expression = "Conformance.rest.resource.type" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "security", Description = @"OAuth | SMART-on-FHIR | NTLM | Basic | Kerberos | Certificates", Type = SearchParamType.Token, Path = new string[] { "Conformance.rest.security.service", }, XPath = "f:Conformance/f:rest/f:security/f:service", Expression = "Conformance.rest.security.service" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "software", Description = @"Part of a the name of a software application", Type = SearchParamType.String, Path = new string[] { "Conformance.software.name", }, XPath = "f:Conformance/f:software/f:name", Expression = "Conformance.software.name" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "status", Description = @"The current status of the conformance statement", Type = SearchParamType.Token, Path = new string[] { "Conformance.status", }, XPath = "f:Conformance/f:status", Expression = "Conformance.status" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "supported-profile", Description = @"Profiles for use cases supported", Type = SearchParamType.Reference, Path = new string[] { "Conformance.profile", }, Target = new ResourceType[] { ResourceType.StructureDefinition, }, XPath = "f:Conformance/f:profile", Expression = "Conformance.profile" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "url", Description = @"The uri that identifies the conformance statement", Type = SearchParamType.Uri, Path = new string[] { "Conformance.url", }, XPath = "f:Conformance/f:url", Expression = "Conformance.url" },
                new SearchParamDefinition() { Resource = "Conformance", Name = "version", Description = @"The version identifier of the conformance statement", Type = SearchParamType.Token, Path = new string[] { "Conformance.version", }, XPath = "f:Conformance/f:version", Expression = "Conformance.version" },
                new SearchParamDefinition() { Resource = "Contract", Name = "actor", Description = @"Contract Actor Type", Type = SearchParamType.Reference, Path = new string[] { "Contract.actor.entity", }, Target = new ResourceType[] { ResourceType.Contract, ResourceType.Device, ResourceType.Group, ResourceType.Location, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, ResourceType.Substance, }, XPath = "f:Contract/f:actor/f:entity", Expression = "Contract.actor.entity" },
                new SearchParamDefinition() { Resource = "Contract", Name = "identifier", Description = @"The identity of the contract", Type = SearchParamType.Token, Path = new string[] { "Contract.identifier", }, XPath = "f:Contract/f:identifier", Expression = "Contract.identifier" },
                new SearchParamDefinition() { Resource = "Contract", Name = "patient", Description = @"The identity of the target of the contract (if a patient)", Type = SearchParamType.Reference, Path = new string[] { "Contract.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Contract/f:subject", Expression = "Contract.subject" },
                new SearchParamDefinition() { Resource = "Contract", Name = "signer", Description = @"Contract Signatory Party", Type = SearchParamType.Reference, Path = new string[] { "Contract.signer.party", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Contract/f:signer/f:party", Expression = "Contract.signer.party" },
                new SearchParamDefinition() { Resource = "Contract", Name = "subject", Description = @"The identity of the target of the contract", Type = SearchParamType.Reference, Path = new string[] { "Contract.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Contract/f:subject", Expression = "Contract.subject" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "dependent", Description = @"Dependent number", Type = SearchParamType.Token, Path = new string[] { "Coverage.dependent", }, XPath = "f:Coverage/f:dependent", Expression = "Coverage.dependent" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "group", Description = @"Group identifier", Type = SearchParamType.Token, Path = new string[] { "Coverage.group", }, XPath = "f:Coverage/f:group", Expression = "Coverage.group" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "identifier", Description = @"The primary identifier of the insured", Type = SearchParamType.Token, Path = new string[] { "Coverage.identifier", }, XPath = "f:Coverage/f:identifier", Expression = "Coverage.identifier" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "issuer", Description = @"The identity of the insurer", Type = SearchParamType.Reference, Path = new string[] { "Coverage.issuer", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Coverage/f:issuer", Expression = "Coverage.issuer" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "plan", Description = @"A plan or policy identifier", Type = SearchParamType.Token, Path = new string[] { "Coverage.plan", }, XPath = "f:Coverage/f:plan", Expression = "Coverage.plan" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "sequence", Description = @"Sequence number", Type = SearchParamType.Token, Path = new string[] { "Coverage.sequence", }, XPath = "f:Coverage/f:sequence", Expression = "Coverage.sequence" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "subplan", Description = @"Sub-plan identifier", Type = SearchParamType.Token, Path = new string[] { "Coverage.subPlan", }, XPath = "f:Coverage/f:subPlan", Expression = "Coverage.subPlan" },
                new SearchParamDefinition() { Resource = "Coverage", Name = "type", Description = @"The kind of coverage", Type = SearchParamType.Token, Path = new string[] { "Coverage.type", }, XPath = "f:Coverage/f:type", Expression = "Coverage.type" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "code", Description = @"A code for the data element (server may choose to do subsumption)", Type = SearchParamType.Token, Path = new string[] { "DataElement.element.code", }, XPath = "f:DataElement/f:element/f:code", Expression = "DataElement.element.code" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "context", Description = @"A use context assigned to the data element", Type = SearchParamType.Token, Path = new string[] { "DataElement.useContext", }, XPath = "f:DataElement/f:useContext", Expression = "DataElement.useContext" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "date", Description = @"The data element publication date", Type = SearchParamType.Date, Path = new string[] { "DataElement.date", }, XPath = "f:DataElement/f:date", Expression = "DataElement.date" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "description", Description = @"Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.", Type = SearchParamType.String, Path = new string[] { "DataElement.element.definition", }, XPath = "f:DataElement/f:element/f:definition", Expression = "DataElement.element.definition" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "identifier", Description = @"The identifier of the data element", Type = SearchParamType.Token, Path = new string[] { "DataElement.identifier", }, XPath = "f:DataElement/f:identifier", Expression = "DataElement.identifier" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "name", Description = @"Name of the data element", Type = SearchParamType.String, Path = new string[] { "DataElement.name", }, XPath = "f:DataElement/f:name", Expression = "DataElement.name" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "publisher", Description = @"Name of the publisher of the data element", Type = SearchParamType.String, Path = new string[] { "DataElement.publisher", }, XPath = "f:DataElement/f:publisher", Expression = "DataElement.publisher" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "status", Description = @"The current status of the data element", Type = SearchParamType.Token, Path = new string[] { "DataElement.status", }, XPath = "f:DataElement/f:status", Expression = "DataElement.status" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "stringency", Description = @"The stringency of the data element definition", Type = SearchParamType.Token, Path = new string[] { "DataElement.stringency", }, XPath = "f:DataElement/f:stringency", Expression = "DataElement.stringency" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "url", Description = @"The official URL for the data element", Type = SearchParamType.Uri, Path = new string[] { "DataElement.url", }, XPath = "f:DataElement/f:url", Expression = "DataElement.url" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "version", Description = @"The version identifier of the data element", Type = SearchParamType.String, Path = new string[] { "DataElement.version", }, XPath = "f:DataElement/f:version", Expression = "DataElement.version" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "objectClass", Description = @"Matches on the 11179-objectClass extension value", Type = SearchParamType.Token, Path = new string[] { "DataElement.element.mapping.extension[@url='http:..hl7.org.fhir.StructureDefinition.11179-objectClass']", "DataElement.element.mapping.extension[@url='http:..hl7.org.fhir.StructureDefinition.11179-objectClass']", }, XPath = "f:DataElement/f:element/f:mapping/f:extension[@url='http://hl7.org/fhir/StructureDefinition/11179-objectClass'] | f:DataElement/f:element/f:mapping/f:extension[@url='http://hl7.org/fhir/StructureDefinition/11179-objectClass']" },
                new SearchParamDefinition() { Resource = "DataElement", Name = "objectClassProperty", Description = @"Matches on the 11179-objectClassProperty extension value", Type = SearchParamType.Token, Path = new string[] { "DataElement.element.mapping.extension[@url='http:..hl7.org.fhir.StructureDefinition.11179-objectClassProperty']", "DataElement.element.mapping.extension[@url='http:..hl7.org.fhir.StructureDefinition.11179-objectClassProperty']", }, XPath = "f:DataElement/f:element/f:mapping/f:extension[@url='http://hl7.org/fhir/StructureDefinition/11179-objectClassProperty'] | f:DataElement/f:element/f:mapping/f:extension[@url='http://hl7.org/fhir/StructureDefinition/11179-objectClassProperty']" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "author", Description = @"The provider or device that identified the issue", Type = SearchParamType.Reference, Path = new string[] { "DetectedIssue.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Practitioner, }, XPath = "f:DetectedIssue/f:author", Expression = "DetectedIssue.author" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "category", Description = @"Issue Category, e.g. drug-drug, duplicate therapy, etc.", Type = SearchParamType.Token, Path = new string[] { "DetectedIssue.category", }, XPath = "f:DetectedIssue/f:category", Expression = "DetectedIssue.category" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "date", Description = @"When identified", Type = SearchParamType.Date, Path = new string[] { "DetectedIssue.date", }, XPath = "f:DetectedIssue/f:date", Expression = "DetectedIssue.date" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "identifier", Description = @"Unique id for the detected issue", Type = SearchParamType.Token, Path = new string[] { "DetectedIssue.identifier", }, XPath = "f:DetectedIssue/f:identifier", Expression = "DetectedIssue.identifier" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "implicated", Description = @"Problem resource", Type = SearchParamType.Reference, Path = new string[] { "DetectedIssue.implicated", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:DetectedIssue/f:implicated", Expression = "DetectedIssue.implicated" },
                new SearchParamDefinition() { Resource = "DetectedIssue", Name = "patient", Description = @"Associated patient", Type = SearchParamType.Reference, Path = new string[] { "DetectedIssue.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DetectedIssue/f:patient", Expression = "DetectedIssue.patient" },
                new SearchParamDefinition() { Resource = "Device", Name = "identifier", Description = @"Instance id from manufacturer, owner, and others", Type = SearchParamType.Token, Path = new string[] { "Device.identifier", }, XPath = "f:Device/f:identifier", Expression = "Device.identifier" },
                new SearchParamDefinition() { Resource = "Device", Name = "location", Description = @"A location, where the resource is found", Type = SearchParamType.Reference, Path = new string[] { "Device.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Device/f:location", Expression = "Device.location" },
                new SearchParamDefinition() { Resource = "Device", Name = "manufacturer", Description = @"The manufacturer of the device", Type = SearchParamType.String, Path = new string[] { "Device.manufacturer", }, XPath = "f:Device/f:manufacturer", Expression = "Device.manufacturer" },
                new SearchParamDefinition() { Resource = "Device", Name = "model", Description = @"The model of the device", Type = SearchParamType.String, Path = new string[] { "Device.model", }, XPath = "f:Device/f:model", Expression = "Device.model" },
                new SearchParamDefinition() { Resource = "Device", Name = "organization", Description = @"The organization responsible for the device", Type = SearchParamType.Reference, Path = new string[] { "Device.owner", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Device/f:owner", Expression = "Device.owner" },
                new SearchParamDefinition() { Resource = "Device", Name = "patient", Description = @"Patient information, if the resource is affixed to a person", Type = SearchParamType.Reference, Path = new string[] { "Device.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Device/f:patient", Expression = "Device.patient" },
                new SearchParamDefinition() { Resource = "Device", Name = "type", Description = @"The type of the device", Type = SearchParamType.Token, Path = new string[] { "Device.type", }, XPath = "f:Device/f:type", Expression = "Device.type" },
                new SearchParamDefinition() { Resource = "Device", Name = "udi", Description = @"FDA mandated Unique Device Identifier", Type = SearchParamType.String, Path = new string[] { "Device.udi", }, XPath = "f:Device/f:udi", Expression = "Device.udi" },
                new SearchParamDefinition() { Resource = "Device", Name = "url", Description = @"Network address to contact device", Type = SearchParamType.Uri, Path = new string[] { "Device.url", }, XPath = "f:Device/f:url", Expression = "Device.url" },
                new SearchParamDefinition() { Resource = "DeviceComponent", Name = "parent", Description = @"The parent DeviceComponent resource", Type = SearchParamType.Reference, Path = new string[] { "DeviceComponent.parent", }, Target = new ResourceType[] { ResourceType.DeviceComponent, }, XPath = "f:DeviceComponent/f:parent", Expression = "DeviceComponent.parent" },
                new SearchParamDefinition() { Resource = "DeviceComponent", Name = "source", Description = @"The device source", Type = SearchParamType.Reference, Path = new string[] { "DeviceComponent.source", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:DeviceComponent/f:source", Expression = "DeviceComponent.source" },
                new SearchParamDefinition() { Resource = "DeviceComponent", Name = "type", Description = @"The device component type", Type = SearchParamType.Token, Path = new string[] { "DeviceComponent.type", }, XPath = "f:DeviceComponent/f:type", Expression = "DeviceComponent.type" },
                new SearchParamDefinition() { Resource = "DeviceMetric", Name = "category", Description = @"The category of the metric", Type = SearchParamType.Token, Path = new string[] { "DeviceMetric.category", }, XPath = "f:DeviceMetric/f:category", Expression = "DeviceMetric.category" },
                new SearchParamDefinition() { Resource = "DeviceMetric", Name = "identifier", Description = @"The identifier of the metric", Type = SearchParamType.Token, Path = new string[] { "DeviceMetric.identifier", }, XPath = "f:DeviceMetric/f:identifier", Expression = "DeviceMetric.identifier" },
                new SearchParamDefinition() { Resource = "DeviceMetric", Name = "parent", Description = @"The parent DeviceMetric resource", Type = SearchParamType.Reference, Path = new string[] { "DeviceMetric.parent", }, Target = new ResourceType[] { ResourceType.DeviceComponent, }, XPath = "f:DeviceMetric/f:parent", Expression = "DeviceMetric.parent" },
                new SearchParamDefinition() { Resource = "DeviceMetric", Name = "source", Description = @"The device resource", Type = SearchParamType.Reference, Path = new string[] { "DeviceMetric.source", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:DeviceMetric/f:source", Expression = "DeviceMetric.source" },
                new SearchParamDefinition() { Resource = "DeviceMetric", Name = "type", Description = @"The component type", Type = SearchParamType.Token, Path = new string[] { "DeviceMetric.type", }, XPath = "f:DeviceMetric/f:type", Expression = "DeviceMetric.type" },
                new SearchParamDefinition() { Resource = "DeviceUseRequest", Name = "device", Description = @"Device requested", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseRequest.device", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:DeviceUseRequest/f:device", Expression = "DeviceUseRequest.device" },
                new SearchParamDefinition() { Resource = "DeviceUseRequest", Name = "patient", Description = @"Search by subject - a patient", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DeviceUseRequest/f:subject", Expression = "DeviceUseRequest.subject" },
                new SearchParamDefinition() { Resource = "DeviceUseRequest", Name = "subject", Description = @"Search by subject", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DeviceUseRequest/f:subject", Expression = "DeviceUseRequest.subject" },
                new SearchParamDefinition() { Resource = "DeviceUseStatement", Name = "device", Description = @"Search by device", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseStatement.device", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:DeviceUseStatement/f:device", Expression = "DeviceUseStatement.device" },
                new SearchParamDefinition() { Resource = "DeviceUseStatement", Name = "patient", Description = @"Search by subject - a patient", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseStatement.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DeviceUseStatement/f:subject", Expression = "DeviceUseStatement.subject" },
                new SearchParamDefinition() { Resource = "DeviceUseStatement", Name = "subject", Description = @"Search by subject", Type = SearchParamType.Reference, Path = new string[] { "DeviceUseStatement.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DeviceUseStatement/f:subject", Expression = "DeviceUseStatement.subject" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "actor", Description = @"Who recorded or did this", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.event.actor", "DiagnosticOrder.item.event.actor", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Practitioner, }, XPath = "f:DiagnosticOrder/f:event/f:actor | f:DiagnosticOrder/f:item/f:event/f:actor", Expression = "DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "bodysite", Description = @"Location of requested test (if applicable)", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.item.bodySite", }, XPath = "f:DiagnosticOrder/f:item/f:bodySite", Expression = "DiagnosticOrder.item.bodySite" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "code", Description = @"Code to indicate the item (test or panel) being ordered", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.item.code", }, XPath = "f:DiagnosticOrder/f:item/f:code", Expression = "DiagnosticOrder.item.code" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "encounter", Description = @"The encounter that this diagnostic order is associated with", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:DiagnosticOrder/f:encounter", Expression = "DiagnosticOrder.encounter" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "event-date", Description = @"The date at which the event happened", Type = SearchParamType.Date, Path = new string[] { "DiagnosticOrder.event.dateTime", }, XPath = "f:DiagnosticOrder/f:event/f:dateTime", Expression = "DiagnosticOrder.event.dateTime" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "event-status", Description = @"proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.event.status", }, XPath = "f:DiagnosticOrder/f:event/f:status", Expression = "DiagnosticOrder.event.status" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "event-status-date", Description = @"A combination of past-status and date", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "identifier", Description = @"Identifiers assigned to this order", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.identifier", }, XPath = "f:DiagnosticOrder/f:identifier", Expression = "DiagnosticOrder.identifier" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "item-date", Description = @"The date at which the event happened", Type = SearchParamType.Date, Path = new string[] { "DiagnosticOrder.item.event.dateTime", }, XPath = "f:DiagnosticOrder/f:item/f:event/f:dateTime", Expression = "DiagnosticOrder.item.event.dateTime" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "item-past-status", Description = @"proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.item.event.status", }, XPath = "f:DiagnosticOrder/f:item/f:event/f:status", Expression = "DiagnosticOrder.item.event.status" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "item-status", Description = @"proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.item.status", }, XPath = "f:DiagnosticOrder/f:item/f:status", Expression = "DiagnosticOrder.item.status" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "item-status-date", Description = @"A combination of item-past-status and item-date", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "orderer", Description = @"Who ordered the test", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.orderer", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:DiagnosticOrder/f:orderer", Expression = "DiagnosticOrder.orderer" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "patient", Description = @"Who and/or what test is about", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DiagnosticOrder/f:subject", Expression = "DiagnosticOrder.subject" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "specimen", Description = @"If the whole order relates to specific specimens", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.specimen", "DiagnosticOrder.item.specimen", }, Target = new ResourceType[] { ResourceType.Specimen, }, XPath = "f:DiagnosticOrder/f:specimen | f:DiagnosticOrder/f:item/f:specimen", Expression = "DiagnosticOrder.specimen | DiagnosticOrder.item.specimen" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "status", Description = @"proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", Type = SearchParamType.Token, Path = new string[] { "DiagnosticOrder.status", }, XPath = "f:DiagnosticOrder/f:status", Expression = "DiagnosticOrder.status" },
                new SearchParamDefinition() { Resource = "DiagnosticOrder", Name = "subject", Description = @"Who and/or what test is about", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticOrder.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Location, ResourceType.Patient, }, XPath = "f:DiagnosticOrder/f:subject", Expression = "DiagnosticOrder.subject" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "category", Description = @"Which diagnostic discipline/department created the report", Type = SearchParamType.Token, Path = new string[] { "DiagnosticReport.category", }, XPath = "f:DiagnosticReport/f:category", Expression = "DiagnosticReport.category" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "code", Description = @"The code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result", Type = SearchParamType.Token, Path = new string[] { "DiagnosticReport.code", }, XPath = "f:DiagnosticReport/f:code", Expression = "DiagnosticReport.code" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "date", Description = @"The clinically relevant time of the report", Type = SearchParamType.Date, Path = new string[] { "DiagnosticReport.effectiveDateTime", "DiagnosticReport.effectivePeriod", }, XPath = "f:DiagnosticReport/f:effectiveDateTime | f:DiagnosticReport/f:effectivePeriod", Expression = "DiagnosticReport.effective" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "diagnosis", Description = @"A coded diagnosis on the report", Type = SearchParamType.Token, Path = new string[] { "DiagnosticReport.codedDiagnosis", }, XPath = "f:DiagnosticReport/f:codedDiagnosis", Expression = "DiagnosticReport.codedDiagnosis" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "encounter", Description = @"The Encounter when the order was made", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:DiagnosticReport/f:encounter", Expression = "DiagnosticReport.encounter" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "identifier", Description = @"An identifier for the report", Type = SearchParamType.Token, Path = new string[] { "DiagnosticReport.identifier", }, XPath = "f:DiagnosticReport/f:identifier", Expression = "DiagnosticReport.identifier" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "image", Description = @"A reference to the image source.", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.image.link", }, Target = new ResourceType[] { ResourceType.Media, }, XPath = "f:DiagnosticReport/f:image/f:link", Expression = "DiagnosticReport.image.link" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "issued", Description = @"When the report was issued", Type = SearchParamType.Date, Path = new string[] { "DiagnosticReport.issued", }, XPath = "f:DiagnosticReport/f:issued", Expression = "DiagnosticReport.issued" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "patient", Description = @"The subject of the report if a patient", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DiagnosticReport/f:subject", Expression = "DiagnosticReport.subject" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "performer", Description = @"Who was the source of the report (organization)", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.performer", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:DiagnosticReport/f:performer", Expression = "DiagnosticReport.performer" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "request", Description = @"Reference to the test or procedure request.", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.request", }, Target = new ResourceType[] { ResourceType.DiagnosticOrder, ResourceType.ProcedureRequest, ResourceType.ReferralRequest, }, XPath = "f:DiagnosticReport/f:request", Expression = "DiagnosticReport.request" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "result", Description = @"Link to an atomic result (observation resource)", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.result", }, Target = new ResourceType[] { ResourceType.Observation, }, XPath = "f:DiagnosticReport/f:result", Expression = "DiagnosticReport.result" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "specimen", Description = @"The specimen details", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.specimen", }, Target = new ResourceType[] { ResourceType.Specimen, }, XPath = "f:DiagnosticReport/f:specimen", Expression = "DiagnosticReport.specimen" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "status", Description = @"The status of the report", Type = SearchParamType.Token, Path = new string[] { "DiagnosticReport.status", }, XPath = "f:DiagnosticReport/f:status", Expression = "DiagnosticReport.status" },
                new SearchParamDefinition() { Resource = "DiagnosticReport", Name = "subject", Description = @"The subject of the report", Type = SearchParamType.Reference, Path = new string[] { "DiagnosticReport.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Location, ResourceType.Patient, }, XPath = "f:DiagnosticReport/f:subject", Expression = "DiagnosticReport.subject" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "author", Description = @"Who and/or what authored the manifest", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:DocumentManifest/f:author", Expression = "DocumentManifest.author" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "content-ref", Description = @"Contents of this set of documents", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.content.pReference", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:DocumentManifest/f:content/f:pReference", Expression = "DocumentManifest.content.pReference" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "created", Description = @"When this document manifest created", Type = SearchParamType.Date, Path = new string[] { "DocumentManifest.created", }, XPath = "f:DocumentManifest/f:created", Expression = "DocumentManifest.created" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "description", Description = @"Human-readable description (title)", Type = SearchParamType.String, Path = new string[] { "DocumentManifest.description", }, XPath = "f:DocumentManifest/f:description", Expression = "DocumentManifest.description" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "identifier", Description = @"Unique Identifier for the set of documents", Type = SearchParamType.Token, Path = new string[] { "DocumentManifest.masterIdentifier", "DocumentManifest.identifier", }, XPath = "f:DocumentManifest/f:masterIdentifier | f:DocumentManifest/f:identifier", Expression = "DocumentManifest.masterIdentifier | DocumentManifest.identifier" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "patient", Description = @"The subject of the set of documents", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DocumentManifest/f:subject", Expression = "DocumentManifest.subject" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "recipient", Description = @"Intended to get notified about this set of documents", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.recipient", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:DocumentManifest/f:recipient", Expression = "DocumentManifest.recipient" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "related-id", Description = @"Identifiers of things that are related", Type = SearchParamType.Token, Path = new string[] { "DocumentManifest.related.identifier", }, XPath = "f:DocumentManifest/f:related/f:identifier", Expression = "DocumentManifest.related.identifier" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "related-ref", Description = @"Related Resource", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.related.ref", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:DocumentManifest/f:related/f:ref", Expression = "DocumentManifest.related.ref" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "source", Description = @"The source system/application/software", Type = SearchParamType.Uri, Path = new string[] { "DocumentManifest.source", }, XPath = "f:DocumentManifest/f:source", Expression = "DocumentManifest.source" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "status", Description = @"current | superseded | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "DocumentManifest.status", }, XPath = "f:DocumentManifest/f:status", Expression = "DocumentManifest.status" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "subject", Description = @"The subject of the set of documents", Type = SearchParamType.Reference, Path = new string[] { "DocumentManifest.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:DocumentManifest/f:subject", Expression = "DocumentManifest.subject" },
                new SearchParamDefinition() { Resource = "DocumentManifest", Name = "type", Description = @"Kind of document set", Type = SearchParamType.Token, Path = new string[] { "DocumentManifest.type", }, XPath = "f:DocumentManifest/f:type", Expression = "DocumentManifest.type" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "authenticator", Description = @"Who/what authenticated the document", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.authenticator", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:DocumentReference/f:authenticator", Expression = "DocumentReference.authenticator" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "author", Description = @"Who and/or what authored the document", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:DocumentReference/f:author", Expression = "DocumentReference.author" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "class", Description = @"Categorization of document", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.class", }, XPath = "f:DocumentReference/f:class", Expression = "DocumentReference.class" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "created", Description = @"Document creation time", Type = SearchParamType.Date, Path = new string[] { "DocumentReference.created", }, XPath = "f:DocumentReference/f:created", Expression = "DocumentReference.created" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "custodian", Description = @"Organization which maintains the document", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.custodian", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:DocumentReference/f:custodian", Expression = "DocumentReference.custodian" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "description", Description = @"Human-readable description (title)", Type = SearchParamType.String, Path = new string[] { "DocumentReference.description", }, XPath = "f:DocumentReference/f:description", Expression = "DocumentReference.description" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "encounter", Description = @"Context of the document  content", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.context.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:DocumentReference/f:context/f:encounter", Expression = "DocumentReference.context.encounter" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "event", Description = @"Main Clinical Acts Documented", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.context.event", }, XPath = "f:DocumentReference/f:context/f:event", Expression = "DocumentReference.context.event" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "facility", Description = @"Kind of facility where patient was seen", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.context.facilityType", }, XPath = "f:DocumentReference/f:context/f:facilityType", Expression = "DocumentReference.context.facilityType" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "format", Description = @"Format/content rules for the document", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.content.format", }, XPath = "f:DocumentReference/f:content/f:format", Expression = "DocumentReference.content.format" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "identifier", Description = @"Master Version Specific Identifier", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.masterIdentifier", "DocumentReference.identifier", }, XPath = "f:DocumentReference/f:masterIdentifier | f:DocumentReference/f:identifier", Expression = "DocumentReference.masterIdentifier | DocumentReference.identifier" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "indexed", Description = @"When this document reference created", Type = SearchParamType.Date, Path = new string[] { "DocumentReference.indexed", }, XPath = "f:DocumentReference/f:indexed", Expression = "DocumentReference.indexed" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "language", Description = @"Human language of the content (BCP-47)", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.content.attachment.language", }, XPath = "f:DocumentReference/f:content/f:attachment/f:language", Expression = "DocumentReference.content.attachment.language" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "location", Description = @"Uri where the data can be found", Type = SearchParamType.Uri, Path = new string[] { "DocumentReference.content.attachment.url", }, XPath = "f:DocumentReference/f:content/f:attachment/f:url", Expression = "DocumentReference.content.attachment.url" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "patient", Description = @"Who/what is the subject of the document", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:DocumentReference/f:subject", Expression = "DocumentReference.subject" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "period", Description = @"Time of service that is being documented", Type = SearchParamType.Date, Path = new string[] { "DocumentReference.context.period", }, XPath = "f:DocumentReference/f:context/f:period", Expression = "DocumentReference.context.period" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "related-id", Description = @"Identifier of related objects or events", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.context.related.identifier", }, XPath = "f:DocumentReference/f:context/f:related/f:identifier", Expression = "DocumentReference.context.related.identifier" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "related-ref", Description = @"Related Resource", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.context.related.ref", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:DocumentReference/f:context/f:related/f:ref", Expression = "DocumentReference.context.related.ref" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "relatesto", Description = @"Target of the relationship", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.relatesTo.target", }, Target = new ResourceType[] { ResourceType.DocumentReference, }, XPath = "f:DocumentReference/f:relatesTo/f:target", Expression = "DocumentReference.relatesTo.target" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "relation", Description = @"replaces | transforms | signs | appends", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.relatesTo.code", }, XPath = "f:DocumentReference/f:relatesTo/f:code", Expression = "DocumentReference.relatesTo.code" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "relationship", Description = @"Combination of relation and relatesTo", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "securitylabel", Description = @"Document security-tags", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.securityLabel", }, XPath = "f:DocumentReference/f:securityLabel", Expression = "DocumentReference.securityLabel" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "setting", Description = @"Additional details about where the content was created (e.g. clinical specialty)", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.context.practiceSetting", }, XPath = "f:DocumentReference/f:context/f:practiceSetting", Expression = "DocumentReference.context.practiceSetting" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "status", Description = @"current | superseded | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.status", }, XPath = "f:DocumentReference/f:status", Expression = "DocumentReference.status" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "subject", Description = @"Who/what is the subject of the document", Type = SearchParamType.Reference, Path = new string[] { "DocumentReference.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:DocumentReference/f:subject", Expression = "DocumentReference.subject" },
                new SearchParamDefinition() { Resource = "DocumentReference", Name = "type", Description = @"Kind of document (LOINC if possible)", Type = SearchParamType.Token, Path = new string[] { "DocumentReference.type", }, XPath = "f:DocumentReference/f:type", Expression = "DocumentReference.type" },
                new SearchParamDefinition() { Resource = "EligibilityRequest", Name = "identifier", Description = @"The business identifier of the Eligibility", Type = SearchParamType.Token, Path = new string[] { "EligibilityRequest.identifier", }, XPath = "f:EligibilityRequest/f:identifier", Expression = "EligibilityRequest.identifier" },
                new SearchParamDefinition() { Resource = "EligibilityResponse", Name = "identifier", Description = @"The business identifier of the Explanation of Benefit", Type = SearchParamType.Token, Path = new string[] { "EligibilityResponse.identifier", }, XPath = "f:EligibilityResponse/f:identifier", Expression = "EligibilityResponse.identifier" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "appointment", Description = @"The appointment that scheduled this encounter", Type = SearchParamType.Reference, Path = new string[] { "Encounter.appointment", }, Target = new ResourceType[] { ResourceType.Appointment, }, XPath = "f:Encounter/f:appointment", Expression = "Encounter.appointment" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "condition", Description = @"Reason the encounter takes place (resource)", Type = SearchParamType.Reference, Path = new string[] { "Encounter.indication", }, Target = new ResourceType[] { ResourceType.Condition, }, XPath = "f:Encounter/f:indication", Expression = "Encounter.indication" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "date", Description = @"A date within the period the Encounter lasted", Type = SearchParamType.Date, Path = new string[] { "Encounter.period", }, XPath = "f:Encounter/f:period", Expression = "Encounter.period" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "episodeofcare", Description = @"Episode(s) of care that this encounter should be recorded against", Type = SearchParamType.Reference, Path = new string[] { "Encounter.episodeOfCare", }, Target = new ResourceType[] { ResourceType.EpisodeOfCare, }, XPath = "f:Encounter/f:episodeOfCare", Expression = "Encounter.episodeOfCare" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "identifier", Description = @"Identifier(s) by which this encounter is known", Type = SearchParamType.Token, Path = new string[] { "Encounter.identifier", }, XPath = "f:Encounter/f:identifier", Expression = "Encounter.identifier" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "incomingreferral", Description = @"The ReferralRequest that initiated this encounter", Type = SearchParamType.Reference, Path = new string[] { "Encounter.incomingReferral", }, Target = new ResourceType[] { ResourceType.ReferralRequest, }, XPath = "f:Encounter/f:incomingReferral", Expression = "Encounter.incomingReferral" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "indication", Description = @"Reason the encounter takes place (resource)", Type = SearchParamType.Reference, Path = new string[] { "Encounter.indication", }, Target = new ResourceType[] { ResourceType.Condition, ResourceType.Procedure, }, XPath = "f:Encounter/f:indication", Expression = "Encounter.indication" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "length", Description = @"Length of encounter in days", Type = SearchParamType.Number, Path = new string[] { "Encounter.length", }, XPath = "f:Encounter/f:length", Expression = "Encounter.length" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "location", Description = @"Location the encounter takes place", Type = SearchParamType.Reference, Path = new string[] { "Encounter.location.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Encounter/f:location/f:location", Expression = "Encounter.location.location" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "location-period", Description = @"Time period during which the patient was present at the location", Type = SearchParamType.Date, Path = new string[] { "Encounter.location.period", }, XPath = "f:Encounter/f:location/f:period", Expression = "Encounter.location.period" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "part-of", Description = @"Another Encounter this encounter is part of", Type = SearchParamType.Reference, Path = new string[] { "Encounter.partOf", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Encounter/f:partOf", Expression = "Encounter.partOf" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "participant", Description = @"Persons involved in the encounter other than the patient", Type = SearchParamType.Reference, Path = new string[] { "Encounter.participant.individual", }, Target = new ResourceType[] { ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Encounter/f:participant/f:individual", Expression = "Encounter.participant.individual" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "participant-type", Description = @"Role of participant in encounter", Type = SearchParamType.Token, Path = new string[] { "Encounter.participant.type", }, XPath = "f:Encounter/f:participant/f:type", Expression = "Encounter.participant.type" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "patient", Description = @"The patient present at the encounter", Type = SearchParamType.Reference, Path = new string[] { "Encounter.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Encounter/f:patient", Expression = "Encounter.patient" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "practitioner", Description = @"Persons involved in the encounter other than the patient", Type = SearchParamType.Reference, Path = new string[] { "Encounter.participant.individual", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Encounter/f:participant/f:individual", Expression = "Encounter.participant.individual" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "procedure", Description = @"Reason the encounter takes place (resource)", Type = SearchParamType.Reference, Path = new string[] { "Encounter.indication", }, Target = new ResourceType[] { ResourceType.Procedure, }, XPath = "f:Encounter/f:indication", Expression = "Encounter.indication" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "reason", Description = @"Reason the encounter takes place (code)", Type = SearchParamType.Token, Path = new string[] { "Encounter.reason", }, XPath = "f:Encounter/f:reason", Expression = "Encounter.reason" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "special-arrangement", Description = @"Wheelchair, translator, stretcher, etc.", Type = SearchParamType.Token, Path = new string[] { "Encounter.hospitalization.specialArrangement", }, XPath = "f:Encounter/f:hospitalization/f:specialArrangement", Expression = "Encounter.hospitalization.specialArrangement" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "status", Description = @"planned | arrived | in-progress | onleave | finished | cancelled", Type = SearchParamType.Token, Path = new string[] { "Encounter.status", }, XPath = "f:Encounter/f:status", Expression = "Encounter.status" },
                new SearchParamDefinition() { Resource = "Encounter", Name = "type", Description = @"Specific type of encounter", Type = SearchParamType.Token, Path = new string[] { "Encounter.type", }, XPath = "f:Encounter/f:type", Expression = "Encounter.type" },
                new SearchParamDefinition() { Resource = "EnrollmentRequest", Name = "identifier", Description = @"The business identifier of the Enrollment", Type = SearchParamType.Token, Path = new string[] { "EnrollmentRequest.identifier", }, XPath = "f:EnrollmentRequest/f:identifier", Expression = "EnrollmentRequest.identifier" },
                new SearchParamDefinition() { Resource = "EnrollmentRequest", Name = "patient", Description = @"The party to be enrolled", Type = SearchParamType.Reference, Path = new string[] { "EnrollmentRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:EnrollmentRequest/f:subject", Expression = "EnrollmentRequest.subject" },
                new SearchParamDefinition() { Resource = "EnrollmentRequest", Name = "subject", Description = @"The party to be enrolled", Type = SearchParamType.Reference, Path = new string[] { "EnrollmentRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:EnrollmentRequest/f:subject", Expression = "EnrollmentRequest.subject" },
                new SearchParamDefinition() { Resource = "EnrollmentResponse", Name = "identifier", Description = @"The business identifier of the Explanation of Benefit", Type = SearchParamType.Token, Path = new string[] { "EnrollmentResponse.identifier", }, XPath = "f:EnrollmentResponse/f:identifier", Expression = "EnrollmentResponse.identifier" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "care-manager", Description = @"Care manager/care co-ordinator for the patient", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.careManager", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:EpisodeOfCare/f:careManager", Expression = "EpisodeOfCare.careManager" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "condition", Description = @"Conditions/problems/diagnoses this episode of care is for", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.condition", }, Target = new ResourceType[] { ResourceType.Condition, }, XPath = "f:EpisodeOfCare/f:condition", Expression = "EpisodeOfCare.condition" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "date", Description = @"The provided date search value falls within the episode of care's period", Type = SearchParamType.Date, Path = new string[] { "EpisodeOfCare.period", }, XPath = "f:EpisodeOfCare/f:period", Expression = "EpisodeOfCare.period" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "identifier", Description = @"Identifier(s) for the EpisodeOfCare", Type = SearchParamType.Token, Path = new string[] { "EpisodeOfCare.identifier", }, XPath = "f:EpisodeOfCare/f:identifier", Expression = "EpisodeOfCare.identifier" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "incomingreferral", Description = @"Incoming Referral Request", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.referralRequest", }, Target = new ResourceType[] { ResourceType.ReferralRequest, }, XPath = "f:EpisodeOfCare/f:referralRequest", Expression = "EpisodeOfCare.referralRequest" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "organization", Description = @"The organization that has assumed the specific responsibilities of this EpisodeOfCare", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.managingOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:EpisodeOfCare/f:managingOrganization", Expression = "EpisodeOfCare.managingOrganization" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "patient", Description = @"Patient for this episode of care", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:EpisodeOfCare/f:patient", Expression = "EpisodeOfCare.patient" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "status", Description = @"The current status of the Episode of Care as provided (does not check the status history collection)", Type = SearchParamType.Token, Path = new string[] { "EpisodeOfCare.status", }, XPath = "f:EpisodeOfCare/f:status", Expression = "EpisodeOfCare.status" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "team-member", Description = @"A Practitioner or Organization allocated to the care team for this EpisodeOfCare", Type = SearchParamType.Reference, Path = new string[] { "EpisodeOfCare.careTeam.member", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:EpisodeOfCare/f:careTeam/f:member", Expression = "EpisodeOfCare.careTeam.member" },
                new SearchParamDefinition() { Resource = "EpisodeOfCare", Name = "type", Description = @"Type/class  - e.g. specialist referral, disease management", Type = SearchParamType.Token, Path = new string[] { "EpisodeOfCare.type", }, XPath = "f:EpisodeOfCare/f:type", Expression = "EpisodeOfCare.type" },
                new SearchParamDefinition() { Resource = "ExplanationOfBenefit", Name = "identifier", Description = @"The business identifier of the Explanation of Benefit", Type = SearchParamType.Token, Path = new string[] { "ExplanationOfBenefit.identifier", }, XPath = "f:ExplanationOfBenefit/f:identifier", Expression = "ExplanationOfBenefit.identifier" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "code", Description = @"A search by a condition code", Type = SearchParamType.Token, Path = new string[] { "FamilyMemberHistory.condition.code", }, XPath = "f:FamilyMemberHistory/f:condition/f:code", Expression = "FamilyMemberHistory.condition.code" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "date", Description = @"When history was captured/updated", Type = SearchParamType.Date, Path = new string[] { "FamilyMemberHistory.date", }, XPath = "f:FamilyMemberHistory/f:date", Expression = "FamilyMemberHistory.date" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "gender", Description = @"A search by a gender code of a family member", Type = SearchParamType.Token, Path = new string[] { "FamilyMemberHistory.gender", }, XPath = "f:FamilyMemberHistory/f:gender", Expression = "FamilyMemberHistory.gender" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "identifier", Description = @"A search by a record identifier", Type = SearchParamType.Token, Path = new string[] { "FamilyMemberHistory.identifier", }, XPath = "f:FamilyMemberHistory/f:identifier", Expression = "FamilyMemberHistory.identifier" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "patient", Description = @"The identity of a subject to list family member history items for", Type = SearchParamType.Reference, Path = new string[] { "FamilyMemberHistory.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:FamilyMemberHistory/f:patient", Expression = "FamilyMemberHistory.patient" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "relationship", Description = @"A search by a relationship type", Type = SearchParamType.Token, Path = new string[] { "FamilyMemberHistory.relationship", }, XPath = "f:FamilyMemberHistory/f:relationship", Expression = "FamilyMemberHistory.relationship" },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "condition", Description = @"Search for a history of a particular condition within a patient's family.", Type = SearchParamType.Token, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "FamilyMemberHistory", Name = "relationship", Description = @"Search for family history of members based on relationship", Type = SearchParamType.Token, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Flag", Name = "author", Description = @"Flag creator", Type = SearchParamType.Reference, Path = new string[] { "Flag.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:Flag/f:author", Expression = "Flag.author" },
                new SearchParamDefinition() { Resource = "Flag", Name = "date", Description = @"Time period when flag is active", Type = SearchParamType.Date, Path = new string[] { "Flag.period", }, XPath = "f:Flag/f:period", Expression = "Flag.period" },
                new SearchParamDefinition() { Resource = "Flag", Name = "encounter", Description = @"Alert relevant during encounter", Type = SearchParamType.Reference, Path = new string[] { "Flag.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Flag/f:encounter", Expression = "Flag.encounter" },
                new SearchParamDefinition() { Resource = "Flag", Name = "patient", Description = @"The identity of a subject to list flags for", Type = SearchParamType.Reference, Path = new string[] { "Flag.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Flag/f:subject", Expression = "Flag.subject" },
                new SearchParamDefinition() { Resource = "Flag", Name = "subject", Description = @"The identity of a subject to list flags for", Type = SearchParamType.Reference, Path = new string[] { "Flag.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Location, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:Flag/f:subject", Expression = "Flag.subject" },
                new SearchParamDefinition() { Resource = "Goal", Name = "category", Description = @"E.g. Treatment, dietary, behavioral, etc.", Type = SearchParamType.Token, Path = new string[] { "Goal.category", }, XPath = "f:Goal/f:category", Expression = "Goal.category" },
                new SearchParamDefinition() { Resource = "Goal", Name = "identifier", Description = @"External Ids for this goal", Type = SearchParamType.Token, Path = new string[] { "Goal.identifier", }, XPath = "f:Goal/f:identifier", Expression = "Goal.identifier" },
                new SearchParamDefinition() { Resource = "Goal", Name = "patient", Description = @"Who this goal is intended for", Type = SearchParamType.Reference, Path = new string[] { "Goal.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Goal/f:subject", Expression = "Goal.subject" },
                new SearchParamDefinition() { Resource = "Goal", Name = "status", Description = @"proposed | planned | accepted | rejected | in-progress | achieved | sustaining | on-hold | cancelled", Type = SearchParamType.Token, Path = new string[] { "Goal.status", }, XPath = "f:Goal/f:status", Expression = "Goal.status" },
                new SearchParamDefinition() { Resource = "Goal", Name = "subject", Description = @"Who this goal is intended for", Type = SearchParamType.Reference, Path = new string[] { "Goal.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Organization, ResourceType.Patient, }, XPath = "f:Goal/f:subject", Expression = "Goal.subject" },
                new SearchParamDefinition() { Resource = "Goal", Name = "targetdate", Description = @"Reach goal on or before", Type = SearchParamType.Date, Path = new string[] { "Goal.targetDate", }, XPath = "f:Goal/f:targetDate", Expression = "Goal.targetDate" },
                new SearchParamDefinition() { Resource = "Group", Name = "actual", Description = @"Descriptive or actual", Type = SearchParamType.Token, Path = new string[] { "Group.actual", }, XPath = "f:Group/f:actual", Expression = "Group.actual" },
                new SearchParamDefinition() { Resource = "Group", Name = "characteristic", Description = @"Kind of characteristic", Type = SearchParamType.Token, Path = new string[] { "Group.characteristic.code", }, XPath = "f:Group/f:characteristic/f:code", Expression = "Group.characteristic.code" },
                new SearchParamDefinition() { Resource = "Group", Name = "characteristic-value", Description = @"A composite of both characteristic and value", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Group", Name = "code", Description = @"The kind of resources contained", Type = SearchParamType.Token, Path = new string[] { "Group.code", }, XPath = "f:Group/f:code", Expression = "Group.code" },
                new SearchParamDefinition() { Resource = "Group", Name = "exclude", Description = @"Group includes or excludes", Type = SearchParamType.Token, Path = new string[] { "Group.characteristic.exclude", }, XPath = "f:Group/f:characteristic/f:exclude", Expression = "Group.characteristic.exclude" },
                new SearchParamDefinition() { Resource = "Group", Name = "identifier", Description = @"Unique id", Type = SearchParamType.Token, Path = new string[] { "Group.identifier", }, XPath = "f:Group/f:identifier", Expression = "Group.identifier" },
                new SearchParamDefinition() { Resource = "Group", Name = "member", Description = @"Reference to the group member", Type = SearchParamType.Reference, Path = new string[] { "Group.member.entity", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Medication, ResourceType.Patient, ResourceType.Practitioner, ResourceType.Substance, }, XPath = "f:Group/f:member/f:entity", Expression = "Group.member.entity" },
                new SearchParamDefinition() { Resource = "Group", Name = "type", Description = @"The type of resources the group contains", Type = SearchParamType.Token, Path = new string[] { "Group.type", }, XPath = "f:Group/f:type", Expression = "Group.type" },
                new SearchParamDefinition() { Resource = "Group", Name = "value", Description = @"Value held by characteristic", Type = SearchParamType.Token, Path = new string[] { "Group.characteristic.valueCodeableConcept", "Group.characteristic.valueBoolean", "Group.characteristic.valueQuantity", "Group.characteristic.valueRange", }, XPath = "f:Group/f:characteristic/f:valueCodeableConcept | f:Group/f:characteristic/f:valueBoolean | f:Group/f:characteristic/f:valueQuantity | f:Group/f:characteristic/f:valueRange", Expression = "Group.characteristic.value" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "characteristic", Description = @"One of the HealthcareService's characteristics", Type = SearchParamType.Token, Path = new string[] { "HealthcareService.characteristic", }, XPath = "f:HealthcareService/f:characteristic", Expression = "HealthcareService.characteristic" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "identifier", Description = @"External identifiers for this item", Type = SearchParamType.Token, Path = new string[] { "HealthcareService.identifier", }, XPath = "f:HealthcareService/f:identifier", Expression = "HealthcareService.identifier" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "location", Description = @"The location of the Healthcare Service", Type = SearchParamType.Reference, Path = new string[] { "HealthcareService.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:HealthcareService/f:location", Expression = "HealthcareService.location" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "name", Description = @"A portion of the Healthcare service name", Type = SearchParamType.String, Path = new string[] { "HealthcareService.serviceName", }, XPath = "f:HealthcareService/f:serviceName", Expression = "HealthcareService.serviceName" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "organization", Description = @"The organization that provides this Healthcare Service", Type = SearchParamType.Reference, Path = new string[] { "HealthcareService.providedBy", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:HealthcareService/f:providedBy", Expression = "HealthcareService.providedBy" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "programname", Description = @"One of the Program Names serviced by this HealthcareService", Type = SearchParamType.String, Path = new string[] { "HealthcareService.programName", }, XPath = "f:HealthcareService/f:programName", Expression = "HealthcareService.programName" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "servicecategory", Description = @"Service Category of the Healthcare Service", Type = SearchParamType.Token, Path = new string[] { "HealthcareService.serviceCategory", }, XPath = "f:HealthcareService/f:serviceCategory", Expression = "HealthcareService.serviceCategory" },
                new SearchParamDefinition() { Resource = "HealthcareService", Name = "servicetype", Description = @"The type of service provided by this healthcare service", Type = SearchParamType.Token, Path = new string[] { "HealthcareService.serviceType.type", }, XPath = "f:HealthcareService/f:serviceType/f:type", Expression = "HealthcareService.serviceType.type" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "author", Description = @"Author of key DICOM object selection", Type = SearchParamType.Reference, Path = new string[] { "ImagingObjectSelection.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:ImagingObjectSelection/f:author", Expression = "ImagingObjectSelection.author" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "authoring-time", Description = @"Time of key DICOM object selection authoring", Type = SearchParamType.Date, Path = new string[] { "ImagingObjectSelection.authoringTime", }, XPath = "f:ImagingObjectSelection/f:authoringTime", Expression = "ImagingObjectSelection.authoringTime" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "identifier", Description = @"UID of key DICOM object selection", Type = SearchParamType.Uri, Path = new string[] { "ImagingObjectSelection.uid", }, XPath = "f:ImagingObjectSelection/f:uid", Expression = "ImagingObjectSelection.uid" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "patient", Description = @"Subject of key DICOM object selection", Type = SearchParamType.Reference, Path = new string[] { "ImagingObjectSelection.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ImagingObjectSelection/f:patient", Expression = "ImagingObjectSelection.patient" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "selected-study", Description = @"Study selected in key DICOM object selection", Type = SearchParamType.Uri, Path = new string[] { "ImagingObjectSelection.study.uid", }, XPath = "f:ImagingObjectSelection/f:study/f:uid", Expression = "ImagingObjectSelection.study.uid" },
                new SearchParamDefinition() { Resource = "ImagingObjectSelection", Name = "title", Description = @"Title of key DICOM object selection", Type = SearchParamType.Token, Path = new string[] { "ImagingObjectSelection.title", }, XPath = "f:ImagingObjectSelection/f:title", Expression = "ImagingObjectSelection.title" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "accession", Description = @"The accession identifier for the study", Type = SearchParamType.Token, Path = new string[] { "ImagingStudy.accession", }, XPath = "f:ImagingStudy/f:accession", Expression = "ImagingStudy.accession" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "bodysite", Description = @"The body site studied", Type = SearchParamType.Token, Path = new string[] { "ImagingStudy.series.bodySite", }, XPath = "f:ImagingStudy/f:series/f:bodySite", Expression = "ImagingStudy.series.bodySite" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "dicom-class", Description = @"The type of the instance", Type = SearchParamType.Uri, Path = new string[] { "ImagingStudy.series.instance.sopClass", }, XPath = "f:ImagingStudy/f:series/f:instance/f:sopClass", Expression = "ImagingStudy.series.instance.sopClass" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "modality", Description = @"The modality of the series", Type = SearchParamType.Token, Path = new string[] { "ImagingStudy.series.modality", }, XPath = "f:ImagingStudy/f:series/f:modality", Expression = "ImagingStudy.series.modality" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "order", Description = @"The order for the image", Type = SearchParamType.Reference, Path = new string[] { "ImagingStudy.order", }, Target = new ResourceType[] { ResourceType.DiagnosticOrder, }, XPath = "f:ImagingStudy/f:order", Expression = "ImagingStudy.order" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "patient", Description = @"Who the study is about", Type = SearchParamType.Reference, Path = new string[] { "ImagingStudy.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ImagingStudy/f:patient", Expression = "ImagingStudy.patient" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "series", Description = @"The identifier of the series of images", Type = SearchParamType.Uri, Path = new string[] { "ImagingStudy.series.uid", }, XPath = "f:ImagingStudy/f:series/f:uid", Expression = "ImagingStudy.series.uid" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "started", Description = @"When the study was started", Type = SearchParamType.Date, Path = new string[] { "ImagingStudy.started", }, XPath = "f:ImagingStudy/f:started", Expression = "ImagingStudy.started" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "study", Description = @"The study identifier for the image", Type = SearchParamType.Uri, Path = new string[] { "ImagingStudy.uid", }, XPath = "f:ImagingStudy/f:uid", Expression = "ImagingStudy.uid" },
                new SearchParamDefinition() { Resource = "ImagingStudy", Name = "uid", Description = @"The instance unique identifier", Type = SearchParamType.Uri, Path = new string[] { "ImagingStudy.series.instance.uid", }, XPath = "f:ImagingStudy/f:series/f:instance/f:uid", Expression = "ImagingStudy.series.instance.uid" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "date", Description = @"Vaccination  (non)-Administration Date", Type = SearchParamType.Date, Path = new string[] { "Immunization.date", }, XPath = "f:Immunization/f:date", Expression = "Immunization.date" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "dose-sequence", Description = @"Dose number within series", Type = SearchParamType.Number, Path = new string[] { "Immunization.vaccinationProtocol.doseSequence", }, XPath = "f:Immunization/f:vaccinationProtocol/f:doseSequence", Expression = "Immunization.vaccinationProtocol.doseSequence" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "identifier", Description = @"Business identifier", Type = SearchParamType.Token, Path = new string[] { "Immunization.identifier", }, XPath = "f:Immunization/f:identifier", Expression = "Immunization.identifier" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "location", Description = @"The service delivery location or facility in which the vaccine was / was to be administered", Type = SearchParamType.Reference, Path = new string[] { "Immunization.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Immunization/f:location", Expression = "Immunization.location" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "lot-number", Description = @"Vaccine Lot Number", Type = SearchParamType.String, Path = new string[] { "Immunization.lotNumber", }, XPath = "f:Immunization/f:lotNumber", Expression = "Immunization.lotNumber" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "manufacturer", Description = @"Vaccine Manufacturer", Type = SearchParamType.Reference, Path = new string[] { "Immunization.manufacturer", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Immunization/f:manufacturer", Expression = "Immunization.manufacturer" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "notgiven", Description = @"Administrations which were not given", Type = SearchParamType.Token, Path = new string[] { "Immunization.wasNotGiven", }, XPath = "f:Immunization/f:wasNotGiven", Expression = "Immunization.wasNotGiven" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "patient", Description = @"The patient for the vaccination record", Type = SearchParamType.Reference, Path = new string[] { "Immunization.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Immunization/f:patient", Expression = "Immunization.patient" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "performer", Description = @"The practitioner who administered the vaccination", Type = SearchParamType.Reference, Path = new string[] { "Immunization.performer", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Immunization/f:performer", Expression = "Immunization.performer" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "reaction", Description = @"Additional information on reaction", Type = SearchParamType.Reference, Path = new string[] { "Immunization.reaction.detail", }, Target = new ResourceType[] { ResourceType.Observation, }, XPath = "f:Immunization/f:reaction/f:detail", Expression = "Immunization.reaction.detail" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "reaction-date", Description = @"When reaction started", Type = SearchParamType.Date, Path = new string[] { "Immunization.reaction.date", }, XPath = "f:Immunization/f:reaction/f:date", Expression = "Immunization.reaction.date" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "reason", Description = @"Why immunization occurred", Type = SearchParamType.Token, Path = new string[] { "Immunization.explanation.reason", }, XPath = "f:Immunization/f:explanation/f:reason", Expression = "Immunization.explanation.reason" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "reason-not-given", Description = @"Explanation of reason vaccination was not administered", Type = SearchParamType.Token, Path = new string[] { "Immunization.explanation.reasonNotGiven", }, XPath = "f:Immunization/f:explanation/f:reasonNotGiven", Expression = "Immunization.explanation.reasonNotGiven" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "requester", Description = @"The practitioner who ordered the vaccination", Type = SearchParamType.Reference, Path = new string[] { "Immunization.requester", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Immunization/f:requester", Expression = "Immunization.requester" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "status", Description = @"Immunization event status", Type = SearchParamType.Token, Path = new string[] { "Immunization.status", }, XPath = "f:Immunization/f:status", Expression = "Immunization.status" },
                new SearchParamDefinition() { Resource = "Immunization", Name = "vaccine-code", Description = @"Vaccine Product Administered", Type = SearchParamType.Token, Path = new string[] { "Immunization.vaccineCode", }, XPath = "f:Immunization/f:vaccineCode", Expression = "Immunization.vaccineCode" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "date", Description = @"Date recommendation created", Type = SearchParamType.Date, Path = new string[] { "ImmunizationRecommendation.recommendation.date", }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:date", Expression = "ImmunizationRecommendation.recommendation.date" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "dose-number", Description = @"Recommended dose number", Type = SearchParamType.Number, Path = new string[] { "ImmunizationRecommendation.recommendation.doseNumber", }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:doseNumber", Expression = "ImmunizationRecommendation.recommendation.doseNumber" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "dose-sequence", Description = @"Dose number within sequence", Type = SearchParamType.Number, Path = new string[] { "ImmunizationRecommendation.recommendation.protocol.doseSequence", }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:protocol/f:doseSequence", Expression = "ImmunizationRecommendation.recommendation.protocol.doseSequence" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "identifier", Description = @"Business identifier", Type = SearchParamType.Token, Path = new string[] { "ImmunizationRecommendation.identifier", }, XPath = "f:ImmunizationRecommendation/f:identifier", Expression = "ImmunizationRecommendation.identifier" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "information", Description = @"Patient observations supporting recommendation", Type = SearchParamType.Reference, Path = new string[] { "ImmunizationRecommendation.recommendation.supportingPatientInformation", }, Target = new ResourceType[] { ResourceType.AllergyIntolerance, ResourceType.Observation, }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:supportingPatientInformation", Expression = "ImmunizationRecommendation.recommendation.supportingPatientInformation" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "patient", Description = @"Who this profile is for", Type = SearchParamType.Reference, Path = new string[] { "ImmunizationRecommendation.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ImmunizationRecommendation/f:patient", Expression = "ImmunizationRecommendation.patient" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "status", Description = @"Vaccine administration status", Type = SearchParamType.Token, Path = new string[] { "ImmunizationRecommendation.recommendation.forecastStatus", }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:forecastStatus", Expression = "ImmunizationRecommendation.recommendation.forecastStatus" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "support", Description = @"Past immunizations supporting recommendation", Type = SearchParamType.Reference, Path = new string[] { "ImmunizationRecommendation.recommendation.supportingImmunization", }, Target = new ResourceType[] { ResourceType.Immunization, }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:supportingImmunization", Expression = "ImmunizationRecommendation.recommendation.supportingImmunization" },
                new SearchParamDefinition() { Resource = "ImmunizationRecommendation", Name = "vaccine-type", Description = @"Vaccine recommendation applies to", Type = SearchParamType.Token, Path = new string[] { "ImmunizationRecommendation.recommendation.vaccineCode", }, XPath = "f:ImmunizationRecommendation/f:recommendation/f:vaccineCode", Expression = "ImmunizationRecommendation.recommendation.vaccineCode" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "context", Description = @"A use context assigned to the structure", Type = SearchParamType.Token, Path = new string[] { "ImplementationGuide.useContext", }, XPath = "f:ImplementationGuide/f:useContext", Expression = "ImplementationGuide.useContext" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "date", Description = @"The implementation guide publication date", Type = SearchParamType.Date, Path = new string[] { "ImplementationGuide.date", }, XPath = "f:ImplementationGuide/f:date", Expression = "ImplementationGuide.date" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "dependency", Description = @"Where to find dependency", Type = SearchParamType.Uri, Path = new string[] { "ImplementationGuide.dependency.uri", }, XPath = "f:ImplementationGuide/f:dependency/f:uri", Expression = "ImplementationGuide.dependency.uri" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "description", Description = @"Text search in the description of the implementation guide", Type = SearchParamType.String, Path = new string[] { "ImplementationGuide.description", }, XPath = "f:ImplementationGuide/f:description", Expression = "ImplementationGuide.description" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "experimental", Description = @"If for testing purposes, not real usage", Type = SearchParamType.Token, Path = new string[] { "ImplementationGuide.experimental", }, XPath = "f:ImplementationGuide/f:experimental", Expression = "ImplementationGuide.experimental" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "name", Description = @"Name of the implementation guide", Type = SearchParamType.String, Path = new string[] { "ImplementationGuide.name", }, XPath = "f:ImplementationGuide/f:name", Expression = "ImplementationGuide.name" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "publisher", Description = @"Name of the publisher of the implementation guide", Type = SearchParamType.String, Path = new string[] { "ImplementationGuide.publisher", }, XPath = "f:ImplementationGuide/f:publisher", Expression = "ImplementationGuide.publisher" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "status", Description = @"The current status of the implementation guide", Type = SearchParamType.Token, Path = new string[] { "ImplementationGuide.status", }, XPath = "f:ImplementationGuide/f:status", Expression = "ImplementationGuide.status" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "url", Description = @"Absolute URL used to reference this Implementation Guide", Type = SearchParamType.Uri, Path = new string[] { "ImplementationGuide.url", }, XPath = "f:ImplementationGuide/f:url", Expression = "ImplementationGuide.url" },
                new SearchParamDefinition() { Resource = "ImplementationGuide", Name = "version", Description = @"The version identifier of the implementation guide", Type = SearchParamType.Token, Path = new string[] { "ImplementationGuide.version", }, XPath = "f:ImplementationGuide/f:version", Expression = "ImplementationGuide.version" },
                new SearchParamDefinition() { Resource = "List", Name = "code", Description = @"What the purpose of this list is", Type = SearchParamType.Token, Path = new string[] { "List.code", }, XPath = "f:List/f:code", Expression = "List.code" },
                new SearchParamDefinition() { Resource = "List", Name = "date", Description = @"When the list was prepared", Type = SearchParamType.Date, Path = new string[] { "List.date", }, XPath = "f:List/f:date", Expression = "List.date" },
                new SearchParamDefinition() { Resource = "List", Name = "empty-reason", Description = @"Why list is empty", Type = SearchParamType.Token, Path = new string[] { "List.emptyReason", }, XPath = "f:List/f:emptyReason", Expression = "List.emptyReason" },
                new SearchParamDefinition() { Resource = "List", Name = "encounter", Description = @"Context in which list created", Type = SearchParamType.Reference, Path = new string[] { "List.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:List/f:encounter", Expression = "List.encounter" },
                new SearchParamDefinition() { Resource = "List", Name = "item", Description = @"Actual entry", Type = SearchParamType.Reference, Path = new string[] { "List.entry.item", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:List/f:entry/f:item", Expression = "List.entry.item" },
                new SearchParamDefinition() { Resource = "List", Name = "notes", Description = @"Comments about the list", Type = SearchParamType.String, Path = new string[] { "List.note", }, XPath = "f:List/f:note", Expression = "List.note" },
                new SearchParamDefinition() { Resource = "List", Name = "patient", Description = @"If all resources have the same subject", Type = SearchParamType.Reference, Path = new string[] { "List.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:List/f:subject", Expression = "List.subject" },
                new SearchParamDefinition() { Resource = "List", Name = "source", Description = @"Who and/or what defined the list contents (aka Author)", Type = SearchParamType.Reference, Path = new string[] { "List.source", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:List/f:source", Expression = "List.source" },
                new SearchParamDefinition() { Resource = "List", Name = "status", Description = @"current | retired | entered-in-error", Type = SearchParamType.Token, Path = new string[] { "List.status", }, XPath = "f:List/f:status", Expression = "List.status" },
                new SearchParamDefinition() { Resource = "List", Name = "subject", Description = @"If all resources have the same subject", Type = SearchParamType.Reference, Path = new string[] { "List.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Location, ResourceType.Patient, }, XPath = "f:List/f:subject", Expression = "List.subject" },
                new SearchParamDefinition() { Resource = "List", Name = "title", Description = @"Descriptive name for the list", Type = SearchParamType.String, Path = new string[] { "List.title", }, XPath = "f:List/f:title", Expression = "List.title" },
                new SearchParamDefinition() { Resource = "Location", Name = "address", Description = @"A (part of the) address of the location", Type = SearchParamType.String, Path = new string[] { "Location.address", }, XPath = "f:Location/f:address", Expression = "Location.address" },
                new SearchParamDefinition() { Resource = "Location", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "Location.address.city", }, XPath = "f:Location/f:address/f:city", Expression = "Location.address.city" },
                new SearchParamDefinition() { Resource = "Location", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "Location.address.country", }, XPath = "f:Location/f:address/f:country", Expression = "Location.address.country" },
                new SearchParamDefinition() { Resource = "Location", Name = "address-postalcode", Description = @"A postal code specified in an address", Type = SearchParamType.String, Path = new string[] { "Location.address.postalCode", }, XPath = "f:Location/f:address/f:postalCode", Expression = "Location.address.postalCode" },
                new SearchParamDefinition() { Resource = "Location", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "Location.address.state", }, XPath = "f:Location/f:address/f:state", Expression = "Location.address.state" },
                new SearchParamDefinition() { Resource = "Location", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "Location.address.use", }, XPath = "f:Location/f:address/f:use", Expression = "Location.address.use" },
                new SearchParamDefinition() { Resource = "Location", Name = "identifier", Description = @"Unique code or number identifying the location to its users", Type = SearchParamType.Token, Path = new string[] { "Location.identifier", }, XPath = "f:Location/f:identifier", Expression = "Location.identifier" },
                new SearchParamDefinition() { Resource = "Location", Name = "name", Description = @"A (portion of the) name of the location", Type = SearchParamType.String, Path = new string[] { "Location.name", }, XPath = "f:Location/f:name", Expression = "Location.name" },
                new SearchParamDefinition() { Resource = "Location", Name = "near", Description = @"The coordinates expressed as [lat],[long] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)", Type = SearchParamType.Token, Path = new string[] { "Location.position", }, XPath = "f:Location/f:position", Expression = "Location.position" },
                new SearchParamDefinition() { Resource = "Location", Name = "near-distance", Description = @"A distance quantity to limit the near search to locations within a specific distance", Type = SearchParamType.Token, Path = new string[] { "Location.position", }, XPath = "f:Location/f:position", Expression = "Location.position" },
                new SearchParamDefinition() { Resource = "Location", Name = "organization", Description = @"Searches for locations that are managed by the provided organization", Type = SearchParamType.Reference, Path = new string[] { "Location.managingOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Location/f:managingOrganization", Expression = "Location.managingOrganization" },
                new SearchParamDefinition() { Resource = "Location", Name = "partof", Description = @"The location of which this location is a part", Type = SearchParamType.Reference, Path = new string[] { "Location.partOf", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Location/f:partOf", Expression = "Location.partOf" },
                new SearchParamDefinition() { Resource = "Location", Name = "status", Description = @"Searches for locations with a specific kind of status", Type = SearchParamType.Token, Path = new string[] { "Location.status", }, XPath = "f:Location/f:status", Expression = "Location.status" },
                new SearchParamDefinition() { Resource = "Location", Name = "type", Description = @"A code for the type of location", Type = SearchParamType.Token, Path = new string[] { "Location.type", }, XPath = "f:Location/f:type", Expression = "Location.type" },
                new SearchParamDefinition() { Resource = "Media", Name = "created", Description = @"Date attachment was first created", Type = SearchParamType.Date, Path = new string[] { "Media.content.creation", }, XPath = "f:Media/f:content/f:creation", Expression = "Media.content.creation" },
                new SearchParamDefinition() { Resource = "Media", Name = "identifier", Description = @"Identifier(s) for the image", Type = SearchParamType.Token, Path = new string[] { "Media.identifier", }, XPath = "f:Media/f:identifier", Expression = "Media.identifier" },
                new SearchParamDefinition() { Resource = "Media", Name = "operator", Description = @"The person who generated the image", Type = SearchParamType.Reference, Path = new string[] { "Media.operator", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Media/f:operator", Expression = "Media.operator" },
                new SearchParamDefinition() { Resource = "Media", Name = "patient", Description = @"Who/What this Media is a record of", Type = SearchParamType.Reference, Path = new string[] { "Media.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Media/f:subject", Expression = "Media.subject" },
                new SearchParamDefinition() { Resource = "Media", Name = "subject", Description = @"Who/What this Media is a record of", Type = SearchParamType.Reference, Path = new string[] { "Media.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Patient, ResourceType.Practitioner, ResourceType.Specimen, }, XPath = "f:Media/f:subject", Expression = "Media.subject" },
                new SearchParamDefinition() { Resource = "Media", Name = "subtype", Description = @"The type of acquisition equipment/process", Type = SearchParamType.Token, Path = new string[] { "Media.subtype", }, XPath = "f:Media/f:subtype", Expression = "Media.subtype" },
                new SearchParamDefinition() { Resource = "Media", Name = "type", Description = @"photo | video | audio", Type = SearchParamType.Token, Path = new string[] { "Media.type", }, XPath = "f:Media/f:type", Expression = "Media.type" },
                new SearchParamDefinition() { Resource = "Media", Name = "view", Description = @"Imaging view, e.g. Lateral or Antero-posterior", Type = SearchParamType.Token, Path = new string[] { "Media.view", }, XPath = "f:Media/f:view", Expression = "Media.view" },
                new SearchParamDefinition() { Resource = "Medication", Name = "code", Description = @"Codes that identify this medication", Type = SearchParamType.Token, Path = new string[] { "Medication.code", }, XPath = "f:Medication/f:code", Expression = "Medication.code" },
                new SearchParamDefinition() { Resource = "Medication", Name = "container", Description = @"E.g. box, vial, blister-pack", Type = SearchParamType.Token, Path = new string[] { "Medication.package.container", }, XPath = "f:Medication/f:package/f:container", Expression = "Medication.package.container" },
                new SearchParamDefinition() { Resource = "Medication", Name = "content", Description = @"A product in the package", Type = SearchParamType.Reference, Path = new string[] { "Medication.package.content.item", }, Target = new ResourceType[] { ResourceType.Medication, }, XPath = "f:Medication/f:package/f:content/f:item", Expression = "Medication.package.content.item" },
                new SearchParamDefinition() { Resource = "Medication", Name = "form", Description = @"powder | tablets | carton +", Type = SearchParamType.Token, Path = new string[] { "Medication.product.form", }, XPath = "f:Medication/f:product/f:form", Expression = "Medication.product.form" },
                new SearchParamDefinition() { Resource = "Medication", Name = "ingredient", Description = @"The product contained", Type = SearchParamType.Reference, Path = new string[] { "Medication.product.ingredient.item", }, Target = new ResourceType[] { ResourceType.Medication, ResourceType.Substance, }, XPath = "f:Medication/f:product/f:ingredient/f:item", Expression = "Medication.product.ingredient.item" },
                new SearchParamDefinition() { Resource = "Medication", Name = "manufacturer", Description = @"Manufacturer of the item", Type = SearchParamType.Reference, Path = new string[] { "Medication.manufacturer", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Medication/f:manufacturer", Expression = "Medication.manufacturer" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "code", Description = @"Return administrations of this medication code", Type = SearchParamType.Token, Path = new string[] { "MedicationAdministration.medicationCodeableConcept", }, XPath = "f:MedicationAdministration/f:medicationCodeableConcept", Expression = "MedicationAdministration.medicationCodeableConcept" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "device", Description = @"Return administrations with this administration device identity", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.device", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:MedicationAdministration/f:device", Expression = "MedicationAdministration.device" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "effectivetime", Description = @"Date administration happened (or did not happen)", Type = SearchParamType.Date, Path = new string[] { "MedicationAdministration.effectiveTimeDateTime", "MedicationAdministration.effectiveTimePeriod", }, XPath = "f:MedicationAdministration/f:effectiveTimeDateTime | f:MedicationAdministration/f:effectiveTimePeriod", Expression = "MedicationAdministration.effectiveTime" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "encounter", Description = @"Return administrations that share this encounter", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:MedicationAdministration/f:encounter", Expression = "MedicationAdministration.encounter" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "identifier", Description = @"Return administrations with this external identifier", Type = SearchParamType.Token, Path = new string[] { "MedicationAdministration.identifier", }, XPath = "f:MedicationAdministration/f:identifier", Expression = "MedicationAdministration.identifier" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "medication", Description = @"Return administrations of this medication resource", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.medicationReference", }, Target = new ResourceType[] { ResourceType.Medication, }, XPath = "f:MedicationAdministration/f:medicationReference", Expression = "MedicationAdministration.medicationReference" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "notgiven", Description = @"Administrations that were not made", Type = SearchParamType.Token, Path = new string[] { "MedicationAdministration.wasNotGiven", }, XPath = "f:MedicationAdministration/f:wasNotGiven", Expression = "MedicationAdministration.wasNotGiven" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "patient", Description = @"The identity of a patient to list administrations  for", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:MedicationAdministration/f:patient", Expression = "MedicationAdministration.patient" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "practitioner", Description = @"Who administered substance", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.practitioner", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:MedicationAdministration/f:practitioner", Expression = "MedicationAdministration.practitioner" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "prescription", Description = @"The identity of a prescription to list administrations from", Type = SearchParamType.Reference, Path = new string[] { "MedicationAdministration.prescription", }, Target = new ResourceType[] { ResourceType.MedicationOrder, }, XPath = "f:MedicationAdministration/f:prescription", Expression = "MedicationAdministration.prescription" },
                new SearchParamDefinition() { Resource = "MedicationAdministration", Name = "status", Description = @"MedicationAdministration event status (for example one of active/paused/completed/nullified)", Type = SearchParamType.Token, Path = new string[] { "MedicationAdministration.status", }, XPath = "f:MedicationAdministration/f:status", Expression = "MedicationAdministration.status" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "code", Description = @"Return dispenses of this medicine code", Type = SearchParamType.Token, Path = new string[] { "MedicationDispense.medicationCodeableConcept", }, XPath = "f:MedicationDispense/f:medicationCodeableConcept", Expression = "MedicationDispense.medicationCodeableConcept" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "destination", Description = @"Return dispenses that should be sent to a specific destination", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.destination", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:MedicationDispense/f:destination", Expression = "MedicationDispense.destination" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "dispenser", Description = @"Return all dispenses performed by a specific individual", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.dispenser", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:MedicationDispense/f:dispenser", Expression = "MedicationDispense.dispenser" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "identifier", Description = @"Return dispenses with this external identifier", Type = SearchParamType.Token, Path = new string[] { "MedicationDispense.identifier", }, XPath = "f:MedicationDispense/f:identifier", Expression = "MedicationDispense.identifier" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "medication", Description = @"Return dispenses of this medicine resource", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.medicationReference", }, Target = new ResourceType[] { ResourceType.Medication, }, XPath = "f:MedicationDispense/f:medicationReference", Expression = "MedicationDispense.medicationReference" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "patient", Description = @"The identity of a patient to list dispenses  for", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:MedicationDispense/f:patient", Expression = "MedicationDispense.patient" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "prescription", Description = @"The identity of a prescription to list dispenses from", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.authorizingPrescription", }, Target = new ResourceType[] { ResourceType.MedicationOrder, }, XPath = "f:MedicationDispense/f:authorizingPrescription", Expression = "MedicationDispense.authorizingPrescription" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "receiver", Description = @"Who collected the medication", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.receiver", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:MedicationDispense/f:receiver", Expression = "MedicationDispense.receiver" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "responsibleparty", Description = @"Return all dispenses with the specified responsible party", Type = SearchParamType.Reference, Path = new string[] { "MedicationDispense.substitution.responsibleParty", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:MedicationDispense/f:substitution/f:responsibleParty", Expression = "MedicationDispense.substitution.responsibleParty" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "status", Description = @"Status of the dispense", Type = SearchParamType.Token, Path = new string[] { "MedicationDispense.status", }, XPath = "f:MedicationDispense/f:status", Expression = "MedicationDispense.status" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "type", Description = @"Return all dispenses of a specific type", Type = SearchParamType.Token, Path = new string[] { "MedicationDispense.type", }, XPath = "f:MedicationDispense/f:type", Expression = "MedicationDispense.type" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "whenhandedover", Description = @"Date when medication handed over to patient (outpatient setting), or supplied to ward or clinic (inpatient setting)", Type = SearchParamType.Date, Path = new string[] { "MedicationDispense.whenHandedOver", }, XPath = "f:MedicationDispense/f:whenHandedOver", Expression = "MedicationDispense.whenHandedOver" },
                new SearchParamDefinition() { Resource = "MedicationDispense", Name = "whenprepared", Description = @"Date when medication prepared", Type = SearchParamType.Date, Path = new string[] { "MedicationDispense.whenPrepared", }, XPath = "f:MedicationDispense/f:whenPrepared", Expression = "MedicationDispense.whenPrepared" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "code", Description = @"Return administrations of this medication code", Type = SearchParamType.Token, Path = new string[] { "MedicationOrder.medicationCodeableConcept", }, XPath = "f:MedicationOrder/f:medicationCodeableConcept", Expression = "MedicationOrder.medicationCodeableConcept" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "datewritten", Description = @"Return prescriptions written on this date", Type = SearchParamType.Date, Path = new string[] { "MedicationOrder.dateWritten", }, XPath = "f:MedicationOrder/f:dateWritten", Expression = "MedicationOrder.dateWritten" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "encounter", Description = @"Return prescriptions with this encounter identifier", Type = SearchParamType.Reference, Path = new string[] { "MedicationOrder.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:MedicationOrder/f:encounter", Expression = "MedicationOrder.encounter" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "identifier", Description = @"Return prescriptions with this external identifier", Type = SearchParamType.Token, Path = new string[] { "MedicationOrder.identifier", }, XPath = "f:MedicationOrder/f:identifier", Expression = "MedicationOrder.identifier" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "medication", Description = @"Return administrations of this medication reference", Type = SearchParamType.Reference, Path = new string[] { "MedicationOrder.medicationReference", }, Target = new ResourceType[] { ResourceType.Medication, }, XPath = "f:MedicationOrder/f:medicationReference", Expression = "MedicationOrder.medicationReference" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "patient", Description = @"The identity of a patient to list orders  for", Type = SearchParamType.Reference, Path = new string[] { "MedicationOrder.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:MedicationOrder/f:patient", Expression = "MedicationOrder.patient" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "prescriber", Description = @"Who ordered the medication(s)", Type = SearchParamType.Reference, Path = new string[] { "MedicationOrder.prescriber", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:MedicationOrder/f:prescriber", Expression = "MedicationOrder.prescriber" },
                new SearchParamDefinition() { Resource = "MedicationOrder", Name = "status", Description = @"Status of the prescription", Type = SearchParamType.Token, Path = new string[] { "MedicationOrder.status", }, XPath = "f:MedicationOrder/f:status", Expression = "MedicationOrder.status" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "code", Description = @"Return administrations of this medication code", Type = SearchParamType.Token, Path = new string[] { "MedicationStatement.medicationCodeableConcept", }, XPath = "f:MedicationStatement/f:medicationCodeableConcept", Expression = "MedicationStatement.medicationCodeableConcept" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "effectivedate", Description = @"Date when patient was taking (or not taking) the medication", Type = SearchParamType.Date, Path = new string[] { "MedicationStatement.effectiveDateTime", "MedicationStatement.effectivePeriod", }, XPath = "f:MedicationStatement/f:effectiveDateTime | f:MedicationStatement/f:effectivePeriod", Expression = "MedicationStatement.effective" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "identifier", Description = @"Return statements with this external identifier", Type = SearchParamType.Token, Path = new string[] { "MedicationStatement.identifier", }, XPath = "f:MedicationStatement/f:identifier", Expression = "MedicationStatement.identifier" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "medication", Description = @"Return administrations of this medication reference", Type = SearchParamType.Reference, Path = new string[] { "MedicationStatement.medicationReference", }, Target = new ResourceType[] { ResourceType.Medication, }, XPath = "f:MedicationStatement/f:medicationReference", Expression = "MedicationStatement.medicationReference" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "patient", Description = @"The identity of a patient to list statements  for", Type = SearchParamType.Reference, Path = new string[] { "MedicationStatement.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:MedicationStatement/f:patient", Expression = "MedicationStatement.patient" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "source", Description = @"Who the information in the statement came from", Type = SearchParamType.Reference, Path = new string[] { "MedicationStatement.informationSource", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:MedicationStatement/f:informationSource", Expression = "MedicationStatement.informationSource" },
                new SearchParamDefinition() { Resource = "MedicationStatement", Name = "status", Description = @"Return statements that match the given status", Type = SearchParamType.Token, Path = new string[] { "MedicationStatement.status", }, XPath = "f:MedicationStatement/f:status", Expression = "MedicationStatement.status" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "author", Description = @"The source of the decision", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.author", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:MessageHeader/f:author", Expression = "MessageHeader.author" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "code", Description = @"ok | transient-error | fatal-error", Type = SearchParamType.Token, Path = new string[] { "MessageHeader.response.code", }, XPath = "f:MessageHeader/f:response/f:code", Expression = "MessageHeader.response.code" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "data", Description = @"The actual content of the message", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.data", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:MessageHeader/f:data", Expression = "MessageHeader.data" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "destination", Description = @"Name of system", Type = SearchParamType.String, Path = new string[] { "MessageHeader.destination.name", }, XPath = "f:MessageHeader/f:destination/f:name", Expression = "MessageHeader.destination.name" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "destination-uri", Description = @"Actual destination address or id", Type = SearchParamType.Uri, Path = new string[] { "MessageHeader.destination.endpoint", }, XPath = "f:MessageHeader/f:destination/f:endpoint", Expression = "MessageHeader.destination.endpoint" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "enterer", Description = @"The source of the data entry", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.enterer", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:MessageHeader/f:enterer", Expression = "MessageHeader.enterer" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "event", Description = @"Code for the event this message represents", Type = SearchParamType.Token, Path = new string[] { "MessageHeader.event", }, XPath = "f:MessageHeader/f:event", Expression = "MessageHeader.event" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "receiver", Description = @"Intended ""real-world"" recipient for the data", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.receiver", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:MessageHeader/f:receiver", Expression = "MessageHeader.receiver" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "response-id", Description = @"Id of original message", Type = SearchParamType.Token, Path = new string[] { "MessageHeader.response.identifier", }, XPath = "f:MessageHeader/f:response/f:identifier", Expression = "MessageHeader.response.identifier" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "responsible", Description = @"Final responsibility for event", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.responsible", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:MessageHeader/f:responsible", Expression = "MessageHeader.responsible" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "source", Description = @"Name of system", Type = SearchParamType.String, Path = new string[] { "MessageHeader.source.name", }, XPath = "f:MessageHeader/f:source/f:name", Expression = "MessageHeader.source.name" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "source-uri", Description = @"Actual message source address or id", Type = SearchParamType.Uri, Path = new string[] { "MessageHeader.source.endpoint", }, XPath = "f:MessageHeader/f:source/f:endpoint", Expression = "MessageHeader.source.endpoint" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "target", Description = @"Particular delivery destination within the destination", Type = SearchParamType.Reference, Path = new string[] { "MessageHeader.destination.target", }, Target = new ResourceType[] { ResourceType.Device, }, XPath = "f:MessageHeader/f:destination/f:target", Expression = "MessageHeader.destination.target" },
                new SearchParamDefinition() { Resource = "MessageHeader", Name = "timestamp", Description = @"Time that the message was sent", Type = SearchParamType.Date, Path = new string[] { "MessageHeader.timestamp", }, XPath = "f:MessageHeader/f:timestamp", Expression = "MessageHeader.timestamp" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "contact", Description = @"Name of a individual to contact", Type = SearchParamType.String, Path = new string[] { "NamingSystem.contact.name", }, XPath = "f:NamingSystem/f:contact/f:name", Expression = "NamingSystem.contact.name" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "context", Description = @"Content intends to support these contexts", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.useContext", }, XPath = "f:NamingSystem/f:useContext", Expression = "NamingSystem.useContext" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "date", Description = @"Publication Date(/time)", Type = SearchParamType.Date, Path = new string[] { "NamingSystem.date", }, XPath = "f:NamingSystem/f:date", Expression = "NamingSystem.date" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "id-type", Description = @"oid | uuid | uri | other", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.uniqueId.type", }, XPath = "f:NamingSystem/f:uniqueId/f:type", Expression = "NamingSystem.uniqueId.type" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "kind", Description = @"codesystem | identifier | root", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.kind", }, XPath = "f:NamingSystem/f:kind", Expression = "NamingSystem.kind" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "name", Description = @"Human-readable label", Type = SearchParamType.String, Path = new string[] { "NamingSystem.name", }, XPath = "f:NamingSystem/f:name", Expression = "NamingSystem.name" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "period", Description = @"When is identifier valid?", Type = SearchParamType.Date, Path = new string[] { "NamingSystem.uniqueId.period", }, XPath = "f:NamingSystem/f:uniqueId/f:period", Expression = "NamingSystem.uniqueId.period" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "publisher", Description = @"Name of the publisher (Organization or individual)", Type = SearchParamType.String, Path = new string[] { "NamingSystem.publisher", }, XPath = "f:NamingSystem/f:publisher", Expression = "NamingSystem.publisher" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "replaced-by", Description = @"Use this instead", Type = SearchParamType.Reference, Path = new string[] { "NamingSystem.replacedBy", }, Target = new ResourceType[] { ResourceType.NamingSystem, }, XPath = "f:NamingSystem/f:replacedBy", Expression = "NamingSystem.replacedBy" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "responsible", Description = @"Who maintains system namespace?", Type = SearchParamType.String, Path = new string[] { "NamingSystem.responsible", }, XPath = "f:NamingSystem/f:responsible", Expression = "NamingSystem.responsible" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "status", Description = @"draft | active | retired", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.status", }, XPath = "f:NamingSystem/f:status", Expression = "NamingSystem.status" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "telecom", Description = @"Contact details for individual or publisher", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.contact.telecom", }, XPath = "f:NamingSystem/f:contact/f:telecom", Expression = "NamingSystem.contact.telecom" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "type", Description = @"e.g. driver,  provider,  patient, bank etc.", Type = SearchParamType.Token, Path = new string[] { "NamingSystem.type", }, XPath = "f:NamingSystem/f:type", Expression = "NamingSystem.type" },
                new SearchParamDefinition() { Resource = "NamingSystem", Name = "value", Description = @"The unique identifier", Type = SearchParamType.String, Path = new string[] { "NamingSystem.uniqueId.value", }, XPath = "f:NamingSystem/f:uniqueId/f:value", Expression = "NamingSystem.uniqueId.value" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "additive", Description = @"Type of module component to add to the feeding", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.enteralFormula.additiveType", }, XPath = "f:NutritionOrder/f:enteralFormula/f:additiveType", Expression = "NutritionOrder.enteralFormula.additiveType" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "datetime", Description = @"Return nutrition orders requested on this date", Type = SearchParamType.Date, Path = new string[] { "NutritionOrder.dateTime", }, XPath = "f:NutritionOrder/f:dateTime", Expression = "NutritionOrder.dateTime" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "encounter", Description = @"Return nutrition orders with this encounter identifier", Type = SearchParamType.Reference, Path = new string[] { "NutritionOrder.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:NutritionOrder/f:encounter", Expression = "NutritionOrder.encounter" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "formula", Description = @"Type of enteral or infant formula", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.enteralFormula.baseFormulaType", }, XPath = "f:NutritionOrder/f:enteralFormula/f:baseFormulaType", Expression = "NutritionOrder.enteralFormula.baseFormulaType" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "identifier", Description = @"Return nutrition orders with this external identifier", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.identifier", }, XPath = "f:NutritionOrder/f:identifier", Expression = "NutritionOrder.identifier" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "oraldiet", Description = @"Type of diet that can be consumed orally (i.e., take via the mouth).", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.oralDiet.type", }, XPath = "f:NutritionOrder/f:oralDiet/f:type", Expression = "NutritionOrder.oralDiet.type" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "patient", Description = @"The identity of the person who requires the diet, formula or nutritional supplement", Type = SearchParamType.Reference, Path = new string[] { "NutritionOrder.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:NutritionOrder/f:patient", Expression = "NutritionOrder.patient" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "provider", Description = @"The identify of the provider who placed the nutrition order", Type = SearchParamType.Reference, Path = new string[] { "NutritionOrder.orderer", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:NutritionOrder/f:orderer", Expression = "NutritionOrder.orderer" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "status", Description = @"Status of the nutrition order.", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.status", }, XPath = "f:NutritionOrder/f:status", Expression = "NutritionOrder.status" },
                new SearchParamDefinition() { Resource = "NutritionOrder", Name = "supplement", Description = @"Type of supplement product requested", Type = SearchParamType.Token, Path = new string[] { "NutritionOrder.supplement.type", }, XPath = "f:NutritionOrder/f:supplement/f:type", Expression = "NutritionOrder.supplement.type" },
                new SearchParamDefinition() { Resource = "Observation", Name = "category", Description = @"The classification of the type of observation", Type = SearchParamType.Token, Path = new string[] { "Observation.category", }, XPath = "f:Observation/f:category", Expression = "Observation.category" },
                new SearchParamDefinition() { Resource = "Observation", Name = "code", Description = @"The code of the observation type", Type = SearchParamType.Token, Path = new string[] { "Observation.code", }, XPath = "f:Observation/f:code", Expression = "Observation.code" },
                new SearchParamDefinition() { Resource = "Observation", Name = "code-value-[x]", Description = @"Both code and one of the value parameters", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-code", Description = @"The component code of the observation type", Type = SearchParamType.Token, Path = new string[] { "Observation.component.code", }, XPath = "f:Observation/f:component/f:code", Expression = "Observation.component.code" },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-code-value-[x]", Description = @"Both component code and one of the component value parameters", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-data-absent-reason", Description = @"The reason why the expected value in the element Observation.component.value[x] is missing.", Type = SearchParamType.Token, Path = new string[] { "Observation.component.dataAbsentReason", }, XPath = "f:Observation/f:component/f:dataAbsentReason", Expression = "Observation.component.dataAbsentReason" },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-value-concept", Description = @"The value of the component observation, if the value is a CodeableConcept", Type = SearchParamType.Token, Path = new string[] { "Observation.component.valueCodeableConcept", }, XPath = "f:Observation/f:component/f:valueCodeableConcept", Expression = "Observation.component.valueCodeableConcept" },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-value-quantity", Description = @"The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)", Type = SearchParamType.Quantity, Path = new string[] { "Observation.component.valueQuantity", }, XPath = "f:Observation/f:component/f:valueQuantity", Expression = "Observation.component.valueQuantity" },
                new SearchParamDefinition() { Resource = "Observation", Name = "component-value-string", Description = @"The value of the component observation, if the value is a string, and also searches in CodeableConcept.text", Type = SearchParamType.String, Path = new string[] { "Observation.component.valueString", }, XPath = "f:Observation/f:component/f:valueString", Expression = "Observation.component.valueString" },
                new SearchParamDefinition() { Resource = "Observation", Name = "data-absent-reason", Description = @"The reason why the expected value in the element Observation.value[x] is missing.", Type = SearchParamType.Token, Path = new string[] { "Observation.dataAbsentReason", }, XPath = "f:Observation/f:dataAbsentReason", Expression = "Observation.dataAbsentReason" },
                new SearchParamDefinition() { Resource = "Observation", Name = "date", Description = @"Obtained date/time. If the obtained element is a period, a date that falls in the period", Type = SearchParamType.Date, Path = new string[] { "Observation.effectiveDateTime", "Observation.effectivePeriod", }, XPath = "f:Observation/f:effectiveDateTime | f:Observation/f:effectivePeriod", Expression = "Observation.effective" },
                new SearchParamDefinition() { Resource = "Observation", Name = "device", Description = @"The Device that generated the observation data.", Type = SearchParamType.Reference, Path = new string[] { "Observation.device", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.DeviceMetric, }, XPath = "f:Observation/f:device", Expression = "Observation.device" },
                new SearchParamDefinition() { Resource = "Observation", Name = "encounter", Description = @"Healthcare event related to the observation", Type = SearchParamType.Reference, Path = new string[] { "Observation.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Observation/f:encounter", Expression = "Observation.encounter" },
                new SearchParamDefinition() { Resource = "Observation", Name = "identifier", Description = @"The unique id for a particular observation", Type = SearchParamType.Token, Path = new string[] { "Observation.identifier", }, XPath = "f:Observation/f:identifier", Expression = "Observation.identifier" },
                new SearchParamDefinition() { Resource = "Observation", Name = "patient", Description = @"The subject that the observation is about (if patient)", Type = SearchParamType.Reference, Path = new string[] { "Observation.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Observation/f:subject", Expression = "Observation.subject" },
                new SearchParamDefinition() { Resource = "Observation", Name = "performer", Description = @"Who performed the observation", Type = SearchParamType.Reference, Path = new string[] { "Observation.performer", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Observation/f:performer", Expression = "Observation.performer" },
                new SearchParamDefinition() { Resource = "Observation", Name = "related", Description = @"Related Observations - search on related-type and related-target together", Type = SearchParamType.Composite, Path = new string[] { } },
                new SearchParamDefinition() { Resource = "Observation", Name = "related-target", Description = @"Resource that is related to this one", Type = SearchParamType.Reference, Path = new string[] { "Observation.related.target", }, Target = new ResourceType[] { ResourceType.Observation, ResourceType.QuestionnaireResponse, }, XPath = "f:Observation/f:related/f:target", Expression = "Observation.related.target" },
                new SearchParamDefinition() { Resource = "Observation", Name = "related-type", Description = @"has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by", Type = SearchParamType.Token, Path = new string[] { "Observation.related.type", }, XPath = "f:Observation/f:related/f:type", Expression = "Observation.related.type" },
                new SearchParamDefinition() { Resource = "Observation", Name = "specimen", Description = @"Specimen used for this observation", Type = SearchParamType.Reference, Path = new string[] { "Observation.specimen", }, Target = new ResourceType[] { ResourceType.Specimen, }, XPath = "f:Observation/f:specimen", Expression = "Observation.specimen" },
                new SearchParamDefinition() { Resource = "Observation", Name = "status", Description = @"The status of the observation", Type = SearchParamType.Token, Path = new string[] { "Observation.status", }, XPath = "f:Observation/f:status", Expression = "Observation.status" },
                new SearchParamDefinition() { Resource = "Observation", Name = "subject", Description = @"The subject that the observation is about", Type = SearchParamType.Reference, Path = new string[] { "Observation.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Location, ResourceType.Patient, }, XPath = "f:Observation/f:subject", Expression = "Observation.subject" },
                new SearchParamDefinition() { Resource = "Observation", Name = "value-concept", Description = @"The value of the observation, if the value is a CodeableConcept", Type = SearchParamType.Token, Path = new string[] { "Observation.valueCodeableConcept", }, XPath = "f:Observation/f:valueCodeableConcept", Expression = "Observation.valueCodeableConcept" },
                new SearchParamDefinition() { Resource = "Observation", Name = "value-date", Description = @"The value of the observation, if the value is a date or period of time", Type = SearchParamType.Date, Path = new string[] { "Observation.valueDateTime", "Observation.valuePeriod", }, XPath = "f:Observation/f:valueDateTime | f:Observation/f:valuePeriod", Expression = "Observation.valueDateTime | Observation.valuePeriod" },
                new SearchParamDefinition() { Resource = "Observation", Name = "value-quantity", Description = @"The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)", Type = SearchParamType.Quantity, Path = new string[] { "Observation.valueQuantity", }, XPath = "f:Observation/f:valueQuantity", Expression = "Observation.valueQuantity" },
                new SearchParamDefinition() { Resource = "Observation", Name = "value-string", Description = @"The value of the observation, if the value is a string, and also searches in CodeableConcept.text", Type = SearchParamType.String, Path = new string[] { "Observation.valueString", }, XPath = "f:Observation/f:valueString", Expression = "Observation.valueString" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "base", Description = @"Marks this as a profile of the base", Type = SearchParamType.Reference, Path = new string[] { "OperationDefinition.base", }, Target = new ResourceType[] { ResourceType.OperationDefinition, }, XPath = "f:OperationDefinition/f:base", Expression = "OperationDefinition.base" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "code", Description = @"Name used to invoke the operation", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.code", }, XPath = "f:OperationDefinition/f:code", Expression = "OperationDefinition.code" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "date", Description = @"Date for this version of the operation definition", Type = SearchParamType.Date, Path = new string[] { "OperationDefinition.date", }, XPath = "f:OperationDefinition/f:date", Expression = "OperationDefinition.date" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "instance", Description = @"Invoke on an instance?", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.instance", }, XPath = "f:OperationDefinition/f:instance", Expression = "OperationDefinition.instance" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "kind", Description = @"operation | query", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.kind", }, XPath = "f:OperationDefinition/f:kind", Expression = "OperationDefinition.kind" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "name", Description = @"Informal name for this operation", Type = SearchParamType.String, Path = new string[] { "OperationDefinition.name", }, XPath = "f:OperationDefinition/f:name", Expression = "OperationDefinition.name" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "profile", Description = @"Profile on the type", Type = SearchParamType.Reference, Path = new string[] { "OperationDefinition.parameter.profile", }, Target = new ResourceType[] { ResourceType.StructureDefinition, }, XPath = "f:OperationDefinition/f:parameter/f:profile", Expression = "OperationDefinition.parameter.profile" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "publisher", Description = @"Name of the publisher (Organization or individual)", Type = SearchParamType.String, Path = new string[] { "OperationDefinition.publisher", }, XPath = "f:OperationDefinition/f:publisher", Expression = "OperationDefinition.publisher" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "status", Description = @"draft | active | retired", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.status", }, XPath = "f:OperationDefinition/f:status", Expression = "OperationDefinition.status" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "system", Description = @"Invoke at the system level?", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.system", }, XPath = "f:OperationDefinition/f:system", Expression = "OperationDefinition.system" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "type", Description = @"Invoke at resource level for these type", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.type", }, XPath = "f:OperationDefinition/f:type", Expression = "OperationDefinition.type" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "url", Description = @"Logical URL to reference this operation definition", Type = SearchParamType.Uri, Path = new string[] { "OperationDefinition.url", }, XPath = "f:OperationDefinition/f:url", Expression = "OperationDefinition.url" },
                new SearchParamDefinition() { Resource = "OperationDefinition", Name = "version", Description = @"Logical id for this version of the operation definition", Type = SearchParamType.Token, Path = new string[] { "OperationDefinition.version", }, XPath = "f:OperationDefinition/f:version", Expression = "OperationDefinition.version" },
                new SearchParamDefinition() { Resource = "Order", Name = "date", Description = @"When the order was made", Type = SearchParamType.Date, Path = new string[] { "Order.date", }, XPath = "f:Order/f:date", Expression = "Order.date" },
                new SearchParamDefinition() { Resource = "Order", Name = "detail", Description = @"What action is being ordered", Type = SearchParamType.Reference, Path = new string[] { "Order.detail", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:Order/f:detail", Expression = "Order.detail" },
                new SearchParamDefinition() { Resource = "Order", Name = "identifier", Description = @"Instance id from source, target, and/or  others", Type = SearchParamType.Token, Path = new string[] { "Order.identifier", }, XPath = "f:Order/f:identifier", Expression = "Order.identifier" },
                new SearchParamDefinition() { Resource = "Order", Name = "patient", Description = @"Patient this order is about", Type = SearchParamType.Reference, Path = new string[] { "Order.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Order/f:subject", Expression = "Order.subject" },
                new SearchParamDefinition() { Resource = "Order", Name = "source", Description = @"Who initiated the order", Type = SearchParamType.Reference, Path = new string[] { "Order.source", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:Order/f:source", Expression = "Order.source" },
                new SearchParamDefinition() { Resource = "Order", Name = "subject", Description = @"Patient this order is about", Type = SearchParamType.Reference, Path = new string[] { "Order.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Patient, ResourceType.Substance, }, XPath = "f:Order/f:subject", Expression = "Order.subject" },
                new SearchParamDefinition() { Resource = "Order", Name = "target", Description = @"Who is intended to fulfill the order", Type = SearchParamType.Reference, Path = new string[] { "Order.target", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:Order/f:target", Expression = "Order.target" },
                new SearchParamDefinition() { Resource = "Order", Name = "when", Description = @"A formal schedule", Type = SearchParamType.Date, Path = new string[] { "Order.when.schedule", }, XPath = "f:Order/f:when/f:schedule", Expression = "Order.when.schedule" },
                new SearchParamDefinition() { Resource = "Order", Name = "when_code", Description = @"Code specifies when request should be done. The code may simply be a priority code", Type = SearchParamType.Token, Path = new string[] { "Order.when.code", }, XPath = "f:Order/f:when/f:code", Expression = "Order.when.code" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "code", Description = @"pending | review | rejected | error | accepted | cancelled | replaced | aborted | completed", Type = SearchParamType.Token, Path = new string[] { "OrderResponse.orderStatus", }, XPath = "f:OrderResponse/f:orderStatus", Expression = "OrderResponse.orderStatus" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "date", Description = @"When the response was made", Type = SearchParamType.Date, Path = new string[] { "OrderResponse.date", }, XPath = "f:OrderResponse/f:date", Expression = "OrderResponse.date" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "fulfillment", Description = @"Details of the outcome of performing the order", Type = SearchParamType.Reference, Path = new string[] { "OrderResponse.fulfillment", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:OrderResponse/f:fulfillment", Expression = "OrderResponse.fulfillment" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "identifier", Description = @"Identifiers assigned to this order by the orderer or by the receiver", Type = SearchParamType.Token, Path = new string[] { "OrderResponse.identifier", }, XPath = "f:OrderResponse/f:identifier", Expression = "OrderResponse.identifier" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "request", Description = @"The order that this is a response to", Type = SearchParamType.Reference, Path = new string[] { "OrderResponse.request", }, Target = new ResourceType[] { ResourceType.Order, }, XPath = "f:OrderResponse/f:request", Expression = "OrderResponse.request" },
                new SearchParamDefinition() { Resource = "OrderResponse", Name = "who", Description = @"Who made the response", Type = SearchParamType.Reference, Path = new string[] { "OrderResponse.who", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:OrderResponse/f:who", Expression = "OrderResponse.who" },
                new SearchParamDefinition() { Resource = "Organization", Name = "active", Description = @"Whether the organization's record is active", Type = SearchParamType.Token, Path = new string[] { "Organization.active", }, XPath = "f:Organization/f:active", Expression = "Organization.active" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address", Description = @"A (part of the) address of the Organization", Type = SearchParamType.String, Path = new string[] { "Organization.address", }, XPath = "f:Organization/f:address", Expression = "Organization.address" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "Organization.address.city", }, XPath = "f:Organization/f:address/f:city", Expression = "Organization.address.city" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "Organization.address.country", }, XPath = "f:Organization/f:address/f:country", Expression = "Organization.address.country" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address-postalcode", Description = @"A postal code specified in an address", Type = SearchParamType.String, Path = new string[] { "Organization.address.postalCode", }, XPath = "f:Organization/f:address/f:postalCode", Expression = "Organization.address.postalCode" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "Organization.address.state", }, XPath = "f:Organization/f:address/f:state", Expression = "Organization.address.state" },
                new SearchParamDefinition() { Resource = "Organization", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "Organization.address.use", }, XPath = "f:Organization/f:address/f:use", Expression = "Organization.address.use" },
                new SearchParamDefinition() { Resource = "Organization", Name = "identifier", Description = @"Any identifier for the organization (not the accreditation issuer's identifier)", Type = SearchParamType.Token, Path = new string[] { "Organization.identifier", }, XPath = "f:Organization/f:identifier", Expression = "Organization.identifier" },
                new SearchParamDefinition() { Resource = "Organization", Name = "name", Description = @"A portion of the organization's name", Type = SearchParamType.String, Path = new string[] { "Organization.name", }, XPath = "f:Organization/f:name", Expression = "Organization.name" },
                new SearchParamDefinition() { Resource = "Organization", Name = "partof", Description = @"Search all organizations that are part of the given organization", Type = SearchParamType.Reference, Path = new string[] { "Organization.partOf", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Organization/f:partOf", Expression = "Organization.partOf" },
                new SearchParamDefinition() { Resource = "Organization", Name = "phonetic", Description = @"A portion of the organization's name using some kind of phonetic matching algorithm", Type = SearchParamType.String, Path = new string[] { "Organization.name", }, XPath = "f:Organization/f:name", Expression = "Organization.name" },
                new SearchParamDefinition() { Resource = "Organization", Name = "type", Description = @"A code for the type of organization", Type = SearchParamType.Token, Path = new string[] { "Organization.type", }, XPath = "f:Organization/f:type", Expression = "Organization.type" },
                new SearchParamDefinition() { Resource = "Patient", Name = "active", Description = @"Whether the patient record is active", Type = SearchParamType.Token, Path = new string[] { "Patient.active", }, XPath = "f:Patient/f:active", Expression = "Patient.active" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address", Description = @"An address in any kind of address/part of the patient", Type = SearchParamType.String, Path = new string[] { "Patient.address", }, XPath = "f:Patient/f:address", Expression = "Patient.address" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "Patient.address.city", }, XPath = "f:Patient/f:address/f:city", Expression = "Patient.address.city" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "Patient.address.country", }, XPath = "f:Patient/f:address/f:country", Expression = "Patient.address.country" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address-postalcode", Description = @"A postalCode specified in an address", Type = SearchParamType.String, Path = new string[] { "Patient.address.postalCode", }, XPath = "f:Patient/f:address/f:postalCode", Expression = "Patient.address.postalCode" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "Patient.address.state", }, XPath = "f:Patient/f:address/f:state", Expression = "Patient.address.state" },
                new SearchParamDefinition() { Resource = "Patient", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "Patient.address.use", }, XPath = "f:Patient/f:address/f:use", Expression = "Patient.address.use" },
                new SearchParamDefinition() { Resource = "Patient", Name = "animal-breed", Description = @"The breed for animal patients", Type = SearchParamType.Token, Path = new string[] { "Patient.animal.breed", }, XPath = "f:Patient/f:animal/f:breed", Expression = "Patient.animal.breed" },
                new SearchParamDefinition() { Resource = "Patient", Name = "animal-species", Description = @"The species for animal patients", Type = SearchParamType.Token, Path = new string[] { "Patient.animal.species", }, XPath = "f:Patient/f:animal/f:species", Expression = "Patient.animal.species" },
                new SearchParamDefinition() { Resource = "Patient", Name = "birthdate", Description = @"The patient's date of birth", Type = SearchParamType.Date, Path = new string[] { "Patient.birthDate", }, XPath = "f:Patient/f:birthDate", Expression = "Patient.birthDate" },
                new SearchParamDefinition() { Resource = "Patient", Name = "careprovider", Description = @"Patient's nominated care provider, could be a care manager, not the organization that manages the record", Type = SearchParamType.Reference, Path = new string[] { "Patient.careProvider", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:Patient/f:careProvider", Expression = "Patient.careProvider" },
                new SearchParamDefinition() { Resource = "Patient", Name = "deathdate", Description = @"The date of death has been provided and satisfies this search value", Type = SearchParamType.Date, Path = new string[] { "Patient.deceasedDateTime", }, XPath = "f:Patient/f:deceasedDateTime", Expression = "Patient.deceasedDateTime" },
                new SearchParamDefinition() { Resource = "Patient", Name = "deceased", Description = @"This patient has been marked as deceased, or as a death date entered", Type = SearchParamType.Token, Path = new string[] { "Patient.deceasedBoolean", "Patient.deceasedDateTime", }, XPath = "f:Patient/f:deceasedBoolean | f:Patient/f:deceasedDateTime", Expression = "Patient.deceased" },
                new SearchParamDefinition() { Resource = "Patient", Name = "email", Description = @"A value in an email contact", Type = SearchParamType.Token, Path = new string[] { "Patient.telecom[system.@value='email']", }, XPath = "f:Patient/f:telecom[system/@value='email']", Expression = "Patient.telecom.where(system='email')" },
                new SearchParamDefinition() { Resource = "Patient", Name = "family", Description = @"A portion of the family name of the patient", Type = SearchParamType.String, Path = new string[] { "Patient.name.family", }, XPath = "f:Patient/f:name/f:family", Expression = "Patient.name.family" },
                new SearchParamDefinition() { Resource = "Patient", Name = "gender", Description = @"Gender of the patient", Type = SearchParamType.Token, Path = new string[] { "Patient.gender", }, XPath = "f:Patient/f:gender", Expression = "Patient.gender" },
                new SearchParamDefinition() { Resource = "Patient", Name = "given", Description = @"A portion of the given name of the patient", Type = SearchParamType.String, Path = new string[] { "Patient.name.given", }, XPath = "f:Patient/f:name/f:given", Expression = "Patient.name.given" },
                new SearchParamDefinition() { Resource = "Patient", Name = "identifier", Description = @"A patient identifier", Type = SearchParamType.Token, Path = new string[] { "Patient.identifier", }, XPath = "f:Patient/f:identifier", Expression = "Patient.identifier" },
                new SearchParamDefinition() { Resource = "Patient", Name = "language", Description = @"Language code (irrespective of use value)", Type = SearchParamType.Token, Path = new string[] { "Patient.communication.language", }, XPath = "f:Patient/f:communication/f:language", Expression = "Patient.communication.language" },
                new SearchParamDefinition() { Resource = "Patient", Name = "link", Description = @"All patients linked to the given patient", Type = SearchParamType.Reference, Path = new string[] { "Patient.link.other", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Patient/f:link/f:other", Expression = "Patient.link.other" },
                new SearchParamDefinition() { Resource = "Patient", Name = "name", Description = @"A portion of either family or given name of the patient", Type = SearchParamType.String, Path = new string[] { "Patient.name", }, XPath = "f:Patient/f:name", Expression = "Patient.name" },
                new SearchParamDefinition() { Resource = "Patient", Name = "organization", Description = @"The organization at which this person is a patient", Type = SearchParamType.Reference, Path = new string[] { "Patient.managingOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Patient/f:managingOrganization", Expression = "Patient.managingOrganization" },
                new SearchParamDefinition() { Resource = "Patient", Name = "phone", Description = @"A value in a phone contact", Type = SearchParamType.Token, Path = new string[] { "Patient.telecom[system.@value='phone']", }, XPath = "f:Patient/f:telecom[system/@value='phone']", Expression = "Patient.telecom.where(system='phone')" },
                new SearchParamDefinition() { Resource = "Patient", Name = "phonetic", Description = @"A portion of either family or given name using some kind of phonetic matching algorithm", Type = SearchParamType.String, Path = new string[] { "Patient.name", }, XPath = "f:Patient/f:name", Expression = "Patient.name" },
                new SearchParamDefinition() { Resource = "Patient", Name = "telecom", Description = @"The value in any kind of telecom details of the patient", Type = SearchParamType.Token, Path = new string[] { "Patient.telecom", }, XPath = "f:Patient/f:telecom", Expression = "Patient.telecom" },
                new SearchParamDefinition() { Resource = "Patient", Name = "race", Description = @"Returns patients with a race extension matching the specified code.", Type = SearchParamType.Token, Path = new string[] { "Patient.extension[@url='http:..hl7.org.fhir.StructureDefinition.us-core-race']", "Patient.extension[@url='http:..hl7.org.fhir.StructureDefinition.us-core-race']", }, XPath = "f:Patient/f:extension[@url='http://hl7.org/fhir/StructureDefinition/us-core-race'] | f:Patient/f:extension[@url='http://hl7.org/fhir/StructureDefinition/us-core-race']" },
                new SearchParamDefinition() { Resource = "Patient", Name = "ethnicity", Description = @"Returns patients with an ethnicity extension matching the specified code.", Type = SearchParamType.Token, Path = new string[] { "Patient.extension[@url='http:..hl7.org.fhir.StructureDefinition.us-core-ethnicity']", "Patient.extension[@url='http:..hl7.org.fhir.StructureDefinition.us-core-ethnicity']", }, XPath = "f:Patient/f:extension[@url='http://hl7.org/fhir/StructureDefinition/us-core-ethnicity'] | f:Patient/f:extension[@url='http://hl7.org/fhir/StructureDefinition/us-core-ethnicity']" },
                new SearchParamDefinition() { Resource = "PaymentNotice", Name = "identifier", Description = @"The business identifier of the Eligibility", Type = SearchParamType.Token, Path = new string[] { "PaymentNotice.identifier", }, XPath = "f:PaymentNotice/f:identifier", Expression = "PaymentNotice.identifier" },
                new SearchParamDefinition() { Resource = "PaymentReconciliation", Name = "identifier", Description = @"The business identifier of the Explanation of Benefit", Type = SearchParamType.Token, Path = new string[] { "PaymentReconciliation.identifier", }, XPath = "f:PaymentReconciliation/f:identifier", Expression = "PaymentReconciliation.identifier" },
                new SearchParamDefinition() { Resource = "Person", Name = "address", Description = @"An address in any kind of address/part", Type = SearchParamType.String, Path = new string[] { "Person.address", }, XPath = "f:Person/f:address", Expression = "Person.address" },
                new SearchParamDefinition() { Resource = "Person", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "Person.address.city", }, XPath = "f:Person/f:address/f:city", Expression = "Person.address.city" },
                new SearchParamDefinition() { Resource = "Person", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "Person.address.country", }, XPath = "f:Person/f:address/f:country", Expression = "Person.address.country" },
                new SearchParamDefinition() { Resource = "Person", Name = "address-postalcode", Description = @"A postal code specified in an address", Type = SearchParamType.String, Path = new string[] { "Person.address.postalCode", }, XPath = "f:Person/f:address/f:postalCode", Expression = "Person.address.postalCode" },
                new SearchParamDefinition() { Resource = "Person", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "Person.address.state", }, XPath = "f:Person/f:address/f:state", Expression = "Person.address.state" },
                new SearchParamDefinition() { Resource = "Person", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "Person.address.use", }, XPath = "f:Person/f:address/f:use", Expression = "Person.address.use" },
                new SearchParamDefinition() { Resource = "Person", Name = "birthdate", Description = @"The person's date of birth", Type = SearchParamType.Date, Path = new string[] { "Person.birthDate", }, XPath = "f:Person/f:birthDate", Expression = "Person.birthDate" },
                new SearchParamDefinition() { Resource = "Person", Name = "email", Description = @"A value in an email contact", Type = SearchParamType.Token, Path = new string[] { "Person.telecom[system.@value='email']", }, XPath = "f:Person/f:telecom[system/@value='email']", Expression = "Person.telecom.where(system='email')" },
                new SearchParamDefinition() { Resource = "Person", Name = "gender", Description = @"The gender of the person", Type = SearchParamType.Token, Path = new string[] { "Person.gender", }, XPath = "f:Person/f:gender", Expression = "Person.gender" },
                new SearchParamDefinition() { Resource = "Person", Name = "identifier", Description = @"A person Identifier", Type = SearchParamType.Token, Path = new string[] { "Person.identifier", }, XPath = "f:Person/f:identifier", Expression = "Person.identifier" },
                new SearchParamDefinition() { Resource = "Person", Name = "link", Description = @"Any link has this Patient, Person, RelatedPerson or Practitioner reference", Type = SearchParamType.Reference, Path = new string[] { "Person.link.target", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Person, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Person/f:link/f:target", Expression = "Person.link.target" },
                new SearchParamDefinition() { Resource = "Person", Name = "name", Description = @"A portion of name in any name part", Type = SearchParamType.String, Path = new string[] { "Person.name", }, XPath = "f:Person/f:name", Expression = "Person.name" },
                new SearchParamDefinition() { Resource = "Person", Name = "organization", Description = @"The organization at which this person record is being managed", Type = SearchParamType.Reference, Path = new string[] { "Person.managingOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Person/f:managingOrganization", Expression = "Person.managingOrganization" },
                new SearchParamDefinition() { Resource = "Person", Name = "patient", Description = @"The Person links to this Patient", Type = SearchParamType.Reference, Path = new string[] { "Person.link.target", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Person/f:link/f:target", Expression = "Person.link.target" },
                new SearchParamDefinition() { Resource = "Person", Name = "phone", Description = @"A value in a phone contact", Type = SearchParamType.Token, Path = new string[] { "Person.telecom[system.@value='phone']", }, XPath = "f:Person/f:telecom[system/@value='phone']", Expression = "Person.telecom.where(system='phone')" },
                new SearchParamDefinition() { Resource = "Person", Name = "phonetic", Description = @"A portion of name using some kind of phonetic matching algorithm", Type = SearchParamType.String, Path = new string[] { "Person.name", }, XPath = "f:Person/f:name", Expression = "Person.name" },
                new SearchParamDefinition() { Resource = "Person", Name = "practitioner", Description = @"The Person links to this Practitioner", Type = SearchParamType.Reference, Path = new string[] { "Person.link.target", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Person/f:link/f:target", Expression = "Person.link.target" },
                new SearchParamDefinition() { Resource = "Person", Name = "relatedperson", Description = @"The Person links to this RelatedPerson", Type = SearchParamType.Reference, Path = new string[] { "Person.link.target", }, Target = new ResourceType[] { ResourceType.RelatedPerson, }, XPath = "f:Person/f:link/f:target", Expression = "Person.link.target" },
                new SearchParamDefinition() { Resource = "Person", Name = "telecom", Description = @"The value in any kind of contact", Type = SearchParamType.Token, Path = new string[] { "Person.telecom", }, XPath = "f:Person/f:telecom", Expression = "Person.telecom" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address", Description = @"An address in any kind of address/part", Type = SearchParamType.String, Path = new string[] { "Practitioner.address", }, XPath = "f:Practitioner/f:address", Expression = "Practitioner.address" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "Practitioner.address.city", }, XPath = "f:Practitioner/f:address/f:city", Expression = "Practitioner.address.city" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "Practitioner.address.country", }, XPath = "f:Practitioner/f:address/f:country", Expression = "Practitioner.address.country" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address-postalcode", Description = @"A postalCode specified in an address", Type = SearchParamType.String, Path = new string[] { "Practitioner.address.postalCode", }, XPath = "f:Practitioner/f:address/f:postalCode", Expression = "Practitioner.address.postalCode" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "Practitioner.address.state", }, XPath = "f:Practitioner/f:address/f:state", Expression = "Practitioner.address.state" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "Practitioner.address.use", }, XPath = "f:Practitioner/f:address/f:use", Expression = "Practitioner.address.use" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "communication", Description = @"One of the languages that the practitioner can communicate with", Type = SearchParamType.Token, Path = new string[] { "Practitioner.communication", }, XPath = "f:Practitioner/f:communication", Expression = "Practitioner.communication" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "email", Description = @"A value in an email contact", Type = SearchParamType.Token, Path = new string[] { "Practitioner.telecom[system.@value='email']", }, XPath = "f:Practitioner/f:telecom[system/@value='email']", Expression = "Practitioner.telecom.where(system='email')" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "family", Description = @"A portion of the family name", Type = SearchParamType.String, Path = new string[] { "Practitioner.name.family", }, XPath = "f:Practitioner/f:name/f:family", Expression = "Practitioner.name.family" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "gender", Description = @"Gender of the practitioner", Type = SearchParamType.Token, Path = new string[] { "Practitioner.gender", }, XPath = "f:Practitioner/f:gender", Expression = "Practitioner.gender" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "given", Description = @"A portion of the given name", Type = SearchParamType.String, Path = new string[] { "Practitioner.name.given", }, XPath = "f:Practitioner/f:name/f:given", Expression = "Practitioner.name.given" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "identifier", Description = @"A practitioner's Identifier", Type = SearchParamType.Token, Path = new string[] { "Practitioner.identifier", }, XPath = "f:Practitioner/f:identifier", Expression = "Practitioner.identifier" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "location", Description = @"One of the locations at which this practitioner provides care", Type = SearchParamType.Reference, Path = new string[] { "Practitioner.practitionerRole.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Practitioner/f:practitionerRole/f:location", Expression = "Practitioner.practitionerRole.location" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "name", Description = @"A portion of either family or given name", Type = SearchParamType.String, Path = new string[] { "Practitioner.name", }, XPath = "f:Practitioner/f:name", Expression = "Practitioner.name" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "organization", Description = @"The identity of the organization the practitioner represents / acts on behalf of", Type = SearchParamType.Reference, Path = new string[] { "Practitioner.practitionerRole.managingOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:Practitioner/f:practitionerRole/f:managingOrganization", Expression = "Practitioner.practitionerRole.managingOrganization" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "phone", Description = @"A value in a phone contact", Type = SearchParamType.Token, Path = new string[] { "Practitioner.telecom[system.@value='phone']", }, XPath = "f:Practitioner/f:telecom[system/@value='phone']", Expression = "Practitioner.telecom.where(system='phone')" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "phonetic", Description = @"A portion of either family or given name using some kind of phonetic matching algorithm", Type = SearchParamType.String, Path = new string[] { "Practitioner.name", }, XPath = "f:Practitioner/f:name", Expression = "Practitioner.name" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "role", Description = @"The practitioner can perform this role at for the organization", Type = SearchParamType.Token, Path = new string[] { "Practitioner.practitionerRole.role", }, XPath = "f:Practitioner/f:practitionerRole/f:role", Expression = "Practitioner.practitionerRole.role" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "specialty", Description = @"The practitioner has this specialty at an organization", Type = SearchParamType.Token, Path = new string[] { "Practitioner.practitionerRole.specialty", }, XPath = "f:Practitioner/f:practitionerRole/f:specialty", Expression = "Practitioner.practitionerRole.specialty" },
                new SearchParamDefinition() { Resource = "Practitioner", Name = "telecom", Description = @"The value in any kind of contact", Type = SearchParamType.Token, Path = new string[] { "Practitioner.telecom", }, XPath = "f:Practitioner/f:telecom", Expression = "Practitioner.telecom" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "code", Description = @"A code to identify a  procedure", Type = SearchParamType.Token, Path = new string[] { "Procedure.code", }, XPath = "f:Procedure/f:code", Expression = "Procedure.code" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "date", Description = @"Date/Period the procedure was performed", Type = SearchParamType.Date, Path = new string[] { "Procedure.performedDateTime", "Procedure.performedPeriod", }, XPath = "f:Procedure/f:performedDateTime | f:Procedure/f:performedPeriod", Expression = "Procedure.performed" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "encounter", Description = @"The encounter associated with the procedure", Type = SearchParamType.Reference, Path = new string[] { "Procedure.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:Procedure/f:encounter", Expression = "Procedure.encounter" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "identifier", Description = @"A unique identifier for a procedure", Type = SearchParamType.Token, Path = new string[] { "Procedure.identifier", }, XPath = "f:Procedure/f:identifier", Expression = "Procedure.identifier" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "location", Description = @"Where the procedure happened", Type = SearchParamType.Reference, Path = new string[] { "Procedure.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Procedure/f:location", Expression = "Procedure.location" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "patient", Description = @"Search by subject - a patient", Type = SearchParamType.Reference, Path = new string[] { "Procedure.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Procedure/f:subject", Expression = "Procedure.subject" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "performer", Description = @"The reference to the practitioner", Type = SearchParamType.Reference, Path = new string[] { "Procedure.performer.actor", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Procedure/f:performer/f:actor", Expression = "Procedure.performer.actor" },
                new SearchParamDefinition() { Resource = "Procedure", Name = "subject", Description = @"Search by subject", Type = SearchParamType.Reference, Path = new string[] { "Procedure.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Patient, }, XPath = "f:Procedure/f:subject", Expression = "Procedure.subject" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "encounter", Description = @"Encounter request created during", Type = SearchParamType.Reference, Path = new string[] { "ProcedureRequest.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:ProcedureRequest/f:encounter", Expression = "ProcedureRequest.encounter" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "identifier", Description = @"A unique identifier of the Procedure Request", Type = SearchParamType.Token, Path = new string[] { "ProcedureRequest.identifier", }, XPath = "f:ProcedureRequest/f:identifier", Expression = "ProcedureRequest.identifier" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "orderer", Description = @"Who made request", Type = SearchParamType.Reference, Path = new string[] { "ProcedureRequest.orderer", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:ProcedureRequest/f:orderer", Expression = "ProcedureRequest.orderer" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "patient", Description = @"Search by subject - a patient", Type = SearchParamType.Reference, Path = new string[] { "ProcedureRequest.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ProcedureRequest/f:subject", Expression = "ProcedureRequest.subject" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "performer", Description = @"Who should perform the procedure", Type = SearchParamType.Reference, Path = new string[] { "ProcedureRequest.performer", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:ProcedureRequest/f:performer", Expression = "ProcedureRequest.performer" },
                new SearchParamDefinition() { Resource = "ProcedureRequest", Name = "subject", Description = @"Search by subject", Type = SearchParamType.Reference, Path = new string[] { "ProcedureRequest.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Patient, }, XPath = "f:ProcedureRequest/f:subject", Expression = "ProcedureRequest.subject" },
                new SearchParamDefinition() { Resource = "ProcessRequest", Name = "action", Description = @"The action requested by this resource", Type = SearchParamType.Token, Path = new string[] { "ProcessRequest.action", }, XPath = "f:ProcessRequest/f:action", Expression = "ProcessRequest.action" },
                new SearchParamDefinition() { Resource = "ProcessRequest", Name = "identifier", Description = @"The business identifier of the ProcessRequest", Type = SearchParamType.Token, Path = new string[] { "ProcessRequest.identifier", }, XPath = "f:ProcessRequest/f:identifier", Expression = "ProcessRequest.identifier" },
                new SearchParamDefinition() { Resource = "ProcessRequest", Name = "organization", Description = @"The organization who generated this request", Type = SearchParamType.Reference, Path = new string[] { "ProcessRequest.organization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:ProcessRequest/f:organization", Expression = "ProcessRequest.organization" },
                new SearchParamDefinition() { Resource = "ProcessRequest", Name = "provider", Description = @"The provider who regenerated this request", Type = SearchParamType.Reference, Path = new string[] { "ProcessRequest.provider", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:ProcessRequest/f:provider", Expression = "ProcessRequest.provider" },
                new SearchParamDefinition() { Resource = "ProcessResponse", Name = "identifier", Description = @"The business identifier of the Explanation of Benefit", Type = SearchParamType.Token, Path = new string[] { "ProcessResponse.identifier", }, XPath = "f:ProcessResponse/f:identifier", Expression = "ProcessResponse.identifier" },
                new SearchParamDefinition() { Resource = "ProcessResponse", Name = "organization", Description = @"The organization who generated this resource", Type = SearchParamType.Reference, Path = new string[] { "ProcessResponse.organization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:ProcessResponse/f:organization", Expression = "ProcessResponse.organization" },
                new SearchParamDefinition() { Resource = "ProcessResponse", Name = "request", Description = @"The reference to the claim", Type = SearchParamType.Reference, Path = new string[] { "ProcessResponse.request", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:ProcessResponse/f:request", Expression = "ProcessResponse.request" },
                new SearchParamDefinition() { Resource = "ProcessResponse", Name = "requestorganization", Description = @"The Organization who is responsible the request transaction", Type = SearchParamType.Reference, Path = new string[] { "ProcessResponse.requestOrganization", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:ProcessResponse/f:requestOrganization", Expression = "ProcessResponse.requestOrganization" },
                new SearchParamDefinition() { Resource = "ProcessResponse", Name = "requestprovider", Description = @"The Provider who is responsible the request transaction", Type = SearchParamType.Reference, Path = new string[] { "ProcessResponse.requestProvider", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:ProcessResponse/f:requestProvider", Expression = "ProcessResponse.requestProvider" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "agent", Description = @"Individual, device or organization playing role", Type = SearchParamType.Reference, Path = new string[] { "Provenance.agent.actor", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Provenance/f:agent/f:actor", Expression = "Provenance.agent.actor" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "end", Description = @"End time with inclusive boundary, if not ongoing", Type = SearchParamType.Date, Path = new string[] { "Provenance.period.end", }, XPath = "f:Provenance/f:period/f:end", Expression = "Provenance.period.end" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "entity", Description = @"Identity of entity", Type = SearchParamType.Uri, Path = new string[] { "Provenance.entity.reference", }, XPath = "f:Provenance/f:entity/f:reference", Expression = "Provenance.entity.reference" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "entitytype", Description = @"The type of resource in this entity", Type = SearchParamType.Token, Path = new string[] { "Provenance.entity.type", }, XPath = "f:Provenance/f:entity/f:type", Expression = "Provenance.entity.type" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "location", Description = @"Where the activity occurred, if relevant", Type = SearchParamType.Reference, Path = new string[] { "Provenance.location", }, Target = new ResourceType[] { ResourceType.Location, }, XPath = "f:Provenance/f:location", Expression = "Provenance.location" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "patient", Description = @"Target Reference(s) (usually version specific)", Type = SearchParamType.Reference, Path = new string[] { "Provenance.target", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Provenance/f:target", Expression = "Provenance.target" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "sigtype", Description = @"Indication of the reason the entity signed the object(s)", Type = SearchParamType.Token, Path = new string[] { "Provenance.signature.type", }, XPath = "f:Provenance/f:signature/f:type", Expression = "Provenance.signature.type" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "start", Description = @"Starting time with inclusive boundary", Type = SearchParamType.Date, Path = new string[] { "Provenance.period.start", }, XPath = "f:Provenance/f:period/f:start", Expression = "Provenance.period.start" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "target", Description = @"Target Reference(s) (usually version specific)", Type = SearchParamType.Reference, Path = new string[] { "Provenance.target", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:Provenance/f:target", Expression = "Provenance.target" },
                new SearchParamDefinition() { Resource = "Provenance", Name = "userid", Description = @"Authorization-system identifier for the agent", Type = SearchParamType.Token, Path = new string[] { "Provenance.agent.userId", }, XPath = "f:Provenance/f:agent/f:userId", Expression = "Provenance.agent.userId" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "code", Description = @"A code that corresponds to the questionnaire or one of its groups", Type = SearchParamType.Token, Path = new string[] { "Questionnaire.group.concept", }, XPath = "f:Questionnaire/f:group/f:concept", Expression = "Questionnaire.group.concept" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "date", Description = @"When the questionnaire was last changed", Type = SearchParamType.Date, Path = new string[] { "Questionnaire.date", }, XPath = "f:Questionnaire/f:date", Expression = "Questionnaire.date" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "identifier", Description = @"An identifier for the questionnaire", Type = SearchParamType.Token, Path = new string[] { "Questionnaire.identifier", }, XPath = "f:Questionnaire/f:identifier", Expression = "Questionnaire.identifier" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "publisher", Description = @"The author of the questionnaire", Type = SearchParamType.String, Path = new string[] { "Questionnaire.publisher", }, XPath = "f:Questionnaire/f:publisher", Expression = "Questionnaire.publisher" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "status", Description = @"The status of the questionnaire", Type = SearchParamType.Token, Path = new string[] { "Questionnaire.status", }, XPath = "f:Questionnaire/f:status", Expression = "Questionnaire.status" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "title", Description = @"All or part of the name of the questionnaire (title for the root group of the questionnaire)", Type = SearchParamType.String, Path = new string[] { "Questionnaire.group.title", }, XPath = "f:Questionnaire/f:group/f:title", Expression = "Questionnaire.group.title" },
                new SearchParamDefinition() { Resource = "Questionnaire", Name = "version", Description = @"The business version of the questionnaire", Type = SearchParamType.String, Path = new string[] { "Questionnaire.version", }, XPath = "f:Questionnaire/f:version", Expression = "Questionnaire.version" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "author", Description = @"The author of the questionnaire", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.author", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:QuestionnaireResponse/f:author", Expression = "QuestionnaireResponse.author" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "authored", Description = @"When the questionnaire was authored", Type = SearchParamType.Date, Path = new string[] { "QuestionnaireResponse.authored", }, XPath = "f:QuestionnaireResponse/f:authored", Expression = "QuestionnaireResponse.authored" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "encounter", Description = @"Encounter during which questionnaire was authored", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:QuestionnaireResponse/f:encounter", Expression = "QuestionnaireResponse.encounter" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "patient", Description = @"The patient that is the subject of the questionnaire", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:QuestionnaireResponse/f:subject", Expression = "QuestionnaireResponse.subject" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "questionnaire", Description = @"The questionnaire the answers are provided for", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.questionnaire", }, Target = new ResourceType[] { ResourceType.Questionnaire, }, XPath = "f:QuestionnaireResponse/f:questionnaire", Expression = "QuestionnaireResponse.questionnaire" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "source", Description = @"The person who answered the questions", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.source", }, Target = new ResourceType[] { ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:QuestionnaireResponse/f:source", Expression = "QuestionnaireResponse.source" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "status", Description = @"The status of the questionnaire response", Type = SearchParamType.Token, Path = new string[] { "QuestionnaireResponse.status", }, XPath = "f:QuestionnaireResponse/f:status", Expression = "QuestionnaireResponse.status" },
                new SearchParamDefinition() { Resource = "QuestionnaireResponse", Name = "subject", Description = @"The subject of the questionnaire", Type = SearchParamType.Reference, Path = new string[] { "QuestionnaireResponse.subject", }, Target = new ResourceType[] { ResourceType.Account, ResourceType.AllergyIntolerance, ResourceType.Appointment, ResourceType.AppointmentResponse, ResourceType.AuditEvent, ResourceType.Basic, ResourceType.Binary, ResourceType.BodySite, ResourceType.Bundle, ResourceType.CarePlan, ResourceType.Claim, ResourceType.ClaimResponse, ResourceType.ClinicalImpression, ResourceType.Communication, ResourceType.CommunicationRequest, ResourceType.Composition, ResourceType.ConceptMap, ResourceType.Condition, ResourceType.Conformance, ResourceType.Contract, ResourceType.Coverage, ResourceType.DataElement, ResourceType.DetectedIssue, ResourceType.Device, ResourceType.DeviceComponent, ResourceType.DeviceMetric, ResourceType.DeviceUseRequest, ResourceType.DeviceUseStatement, ResourceType.DiagnosticOrder, ResourceType.DiagnosticReport, ResourceType.DocumentManifest, ResourceType.DocumentReference, ResourceType.EligibilityRequest, ResourceType.EligibilityResponse, ResourceType.Encounter, ResourceType.EnrollmentRequest, ResourceType.EnrollmentResponse, ResourceType.EpisodeOfCare, ResourceType.ExplanationOfBenefit, ResourceType.FamilyMemberHistory, ResourceType.Flag, ResourceType.Goal, ResourceType.Group, ResourceType.HealthcareService, ResourceType.ImagingObjectSelection, ResourceType.ImagingStudy, ResourceType.Immunization, ResourceType.ImmunizationRecommendation, ResourceType.ImplementationGuide, ResourceType.List, ResourceType.Location, ResourceType.Media, ResourceType.Medication, ResourceType.MedicationAdministration, ResourceType.MedicationDispense, ResourceType.MedicationOrder, ResourceType.MedicationStatement, ResourceType.MessageHeader, ResourceType.NamingSystem, ResourceType.NutritionOrder, ResourceType.Observation, ResourceType.OperationDefinition, ResourceType.OperationOutcome, ResourceType.Order, ResourceType.OrderResponse, ResourceType.Organization, ResourceType.Patient, ResourceType.PaymentNotice, ResourceType.PaymentReconciliation, ResourceType.Person, ResourceType.Practitioner, ResourceType.Procedure, ResourceType.ProcedureRequest, ResourceType.ProcessRequest, ResourceType.ProcessResponse, ResourceType.Provenance, ResourceType.Questionnaire, ResourceType.QuestionnaireResponse, ResourceType.ReferralRequest, ResourceType.RelatedPerson, ResourceType.RiskAssessment, ResourceType.Schedule, ResourceType.SearchParameter, ResourceType.Slot, ResourceType.Specimen, ResourceType.StructureDefinition, ResourceType.Subscription, ResourceType.Substance, ResourceType.SupplyDelivery, ResourceType.SupplyRequest, ResourceType.TestScript, ResourceType.ValueSet, ResourceType.VisionPrescription, }, XPath = "f:QuestionnaireResponse/f:subject", Expression = "QuestionnaireResponse.subject" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "date", Description = @"Creation or activation date", Type = SearchParamType.Date, Path = new string[] { "ReferralRequest.date", }, XPath = "f:ReferralRequest/f:date", Expression = "ReferralRequest.date" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "patient", Description = @"Who the referral is about", Type = SearchParamType.Reference, Path = new string[] { "ReferralRequest.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:ReferralRequest/f:patient", Expression = "ReferralRequest.patient" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "priority", Description = @"The priority assigned to the referral", Type = SearchParamType.Token, Path = new string[] { "ReferralRequest.priority", }, XPath = "f:ReferralRequest/f:priority", Expression = "ReferralRequest.priority" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "recipient", Description = @"The person that the referral was sent to", Type = SearchParamType.Reference, Path = new string[] { "ReferralRequest.recipient", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Practitioner, }, XPath = "f:ReferralRequest/f:recipient", Expression = "ReferralRequest.recipient" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "requester", Description = @"Requester of referral / transfer of care", Type = SearchParamType.Reference, Path = new string[] { "ReferralRequest.requester", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:ReferralRequest/f:requester", Expression = "ReferralRequest.requester" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "specialty", Description = @"The specialty that the referral is for", Type = SearchParamType.Token, Path = new string[] { "ReferralRequest.specialty", }, XPath = "f:ReferralRequest/f:specialty", Expression = "ReferralRequest.specialty" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "status", Description = @"The status of the referral", Type = SearchParamType.Token, Path = new string[] { "ReferralRequest.status", }, XPath = "f:ReferralRequest/f:status", Expression = "ReferralRequest.status" },
                new SearchParamDefinition() { Resource = "ReferralRequest", Name = "type", Description = @"The type of the referral", Type = SearchParamType.Token, Path = new string[] { "ReferralRequest.type", }, XPath = "f:ReferralRequest/f:type", Expression = "ReferralRequest.type" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address", Description = @"An address in any kind of address/part", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.address", }, XPath = "f:RelatedPerson/f:address", Expression = "RelatedPerson.address" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address-city", Description = @"A city specified in an address", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.address.city", }, XPath = "f:RelatedPerson/f:address/f:city", Expression = "RelatedPerson.address.city" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address-country", Description = @"A country specified in an address", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.address.country", }, XPath = "f:RelatedPerson/f:address/f:country", Expression = "RelatedPerson.address.country" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address-postalcode", Description = @"A postal code specified in an address", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.address.postalCode", }, XPath = "f:RelatedPerson/f:address/f:postalCode", Expression = "RelatedPerson.address.postalCode" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address-state", Description = @"A state specified in an address", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.address.state", }, XPath = "f:RelatedPerson/f:address/f:state", Expression = "RelatedPerson.address.state" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "address-use", Description = @"A use code specified in an address", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.address.use", }, XPath = "f:RelatedPerson/f:address/f:use", Expression = "RelatedPerson.address.use" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "birthdate", Description = @"The Related Person's date of birth", Type = SearchParamType.Date, Path = new string[] { "RelatedPerson.birthDate", }, XPath = "f:RelatedPerson/f:birthDate", Expression = "RelatedPerson.birthDate" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "email", Description = @"A value in an email contact", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.telecom[system.@value='email']", }, XPath = "f:RelatedPerson/f:telecom[system/@value='email']", Expression = "RelatedPerson.telecom.where(system='email')" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "gender", Description = @"Gender of the person", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.gender", }, XPath = "f:RelatedPerson/f:gender", Expression = "RelatedPerson.gender" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "identifier", Description = @"A patient Identifier", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.identifier", }, XPath = "f:RelatedPerson/f:identifier", Expression = "RelatedPerson.identifier" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "name", Description = @"A portion of name in any name part", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.name", }, XPath = "f:RelatedPerson/f:name", Expression = "RelatedPerson.name" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "patient", Description = @"The patient this person is related to", Type = SearchParamType.Reference, Path = new string[] { "RelatedPerson.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:RelatedPerson/f:patient", Expression = "RelatedPerson.patient" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "phone", Description = @"A value in a phone contact", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.telecom[system.@value='phone']", }, XPath = "f:RelatedPerson/f:telecom[system/@value='phone']", Expression = "RelatedPerson.telecom.where(system='phone')" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "phonetic", Description = @"A portion of name using some kind of phonetic matching algorithm", Type = SearchParamType.String, Path = new string[] { "RelatedPerson.name", }, XPath = "f:RelatedPerson/f:name", Expression = "RelatedPerson.name" },
                new SearchParamDefinition() { Resource = "RelatedPerson", Name = "telecom", Description = @"The value in any kind of contact", Type = SearchParamType.Token, Path = new string[] { "RelatedPerson.telecom", }, XPath = "f:RelatedPerson/f:telecom", Expression = "RelatedPerson.telecom" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "condition", Description = @"Condition assessed", Type = SearchParamType.Reference, Path = new string[] { "RiskAssessment.condition", }, Target = new ResourceType[] { ResourceType.Condition, }, XPath = "f:RiskAssessment/f:condition", Expression = "RiskAssessment.condition" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "date", Description = @"When was assessment made?", Type = SearchParamType.Date, Path = new string[] { "RiskAssessment.date", }, XPath = "f:RiskAssessment/f:date", Expression = "RiskAssessment.date" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "encounter", Description = @"Where was assessment performed?", Type = SearchParamType.Reference, Path = new string[] { "RiskAssessment.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:RiskAssessment/f:encounter", Expression = "RiskAssessment.encounter" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "identifier", Description = @"Unique identifier for the assessment", Type = SearchParamType.Token, Path = new string[] { "RiskAssessment.identifier", }, XPath = "f:RiskAssessment/f:identifier", Expression = "RiskAssessment.identifier" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "method", Description = @"Evaluation mechanism", Type = SearchParamType.Token, Path = new string[] { "RiskAssessment.method", }, XPath = "f:RiskAssessment/f:method", Expression = "RiskAssessment.method" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "patient", Description = @"Who/what does assessment apply to?", Type = SearchParamType.Reference, Path = new string[] { "RiskAssessment.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:RiskAssessment/f:subject", Expression = "RiskAssessment.subject" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "performer", Description = @"Who did assessment?", Type = SearchParamType.Reference, Path = new string[] { "RiskAssessment.performer", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Practitioner, }, XPath = "f:RiskAssessment/f:performer", Expression = "RiskAssessment.performer" },
                new SearchParamDefinition() { Resource = "RiskAssessment", Name = "subject", Description = @"Who/what does assessment apply to?", Type = SearchParamType.Reference, Path = new string[] { "RiskAssessment.subject", }, Target = new ResourceType[] { ResourceType.Group, ResourceType.Patient, }, XPath = "f:RiskAssessment/f:subject", Expression = "RiskAssessment.subject" },
                new SearchParamDefinition() { Resource = "Schedule", Name = "actor", Description = @"The individual(HealthcareService, Practitioner, Location, ...) to find a Schedule for", Type = SearchParamType.Reference, Path = new string[] { "Schedule.actor", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.HealthcareService, ResourceType.Location, ResourceType.Patient, ResourceType.Practitioner, ResourceType.RelatedPerson, }, XPath = "f:Schedule/f:actor", Expression = "Schedule.actor" },
                new SearchParamDefinition() { Resource = "Schedule", Name = "date", Description = @"Search for Schedule resources that have a period that contains this date specified", Type = SearchParamType.Date, Path = new string[] { "Schedule.planningHorizon", }, XPath = "f:Schedule/f:planningHorizon", Expression = "Schedule.planningHorizon" },
                new SearchParamDefinition() { Resource = "Schedule", Name = "identifier", Description = @"A Schedule Identifier", Type = SearchParamType.Token, Path = new string[] { "Schedule.identifier", }, XPath = "f:Schedule/f:identifier", Expression = "Schedule.identifier" },
                new SearchParamDefinition() { Resource = "Schedule", Name = "type", Description = @"The type of appointments that can be booked into associated slot(s)", Type = SearchParamType.Token, Path = new string[] { "Schedule.type", }, XPath = "f:Schedule/f:type", Expression = "Schedule.type" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "base", Description = @"The resource type this search parameter applies to", Type = SearchParamType.Token, Path = new string[] { "SearchParameter.base", }, XPath = "f:SearchParameter/f:base", Expression = "SearchParameter.base" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "code", Description = @"Code used in URL", Type = SearchParamType.Token, Path = new string[] { "SearchParameter.code", }, XPath = "f:SearchParameter/f:code", Expression = "SearchParameter.code" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "description", Description = @"Documentation for  search parameter", Type = SearchParamType.String, Path = new string[] { "SearchParameter.description", }, XPath = "f:SearchParameter/f:description", Expression = "SearchParameter.description" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "name", Description = @"Informal name for this search parameter", Type = SearchParamType.String, Path = new string[] { "SearchParameter.name", }, XPath = "f:SearchParameter/f:name", Expression = "SearchParameter.name" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "target", Description = @"Types of resource (if a resource reference)", Type = SearchParamType.Token, Path = new string[] { "SearchParameter.target", }, XPath = "f:SearchParameter/f:target", Expression = "SearchParameter.target" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "type", Description = @"number | date | string | token | reference | composite | quantity | uri", Type = SearchParamType.Token, Path = new string[] { "SearchParameter.type", }, XPath = "f:SearchParameter/f:type", Expression = "SearchParameter.type" },
                new SearchParamDefinition() { Resource = "SearchParameter", Name = "url", Description = @"Absolute URL used to reference this search parameter", Type = SearchParamType.Uri, Path = new string[] { "SearchParameter.url", }, XPath = "f:SearchParameter/f:url", Expression = "SearchParameter.url" },
                new SearchParamDefinition() { Resource = "Slot", Name = "fb-type", Description = @"The free/busy status of the appointment", Type = SearchParamType.Token, Path = new string[] { "Slot.freeBusyType", }, XPath = "f:Slot/f:freeBusyType", Expression = "Slot.freeBusyType" },
                new SearchParamDefinition() { Resource = "Slot", Name = "identifier", Description = @"A Slot Identifier", Type = SearchParamType.Token, Path = new string[] { "Slot.identifier", }, XPath = "f:Slot/f:identifier", Expression = "Slot.identifier" },
                new SearchParamDefinition() { Resource = "Slot", Name = "schedule", Description = @"The Schedule Resource that we are seeking a slot within", Type = SearchParamType.Reference, Path = new string[] { "Slot.schedule", }, Target = new ResourceType[] { ResourceType.Schedule, }, XPath = "f:Slot/f:schedule", Expression = "Slot.schedule" },
                new SearchParamDefinition() { Resource = "Slot", Name = "slot-type", Description = @"The type of appointments that can be booked into the slot", Type = SearchParamType.Token, Path = new string[] { "Slot.type", }, XPath = "f:Slot/f:type", Expression = "Slot.type" },
                new SearchParamDefinition() { Resource = "Slot", Name = "start", Description = @"Appointment date/time.", Type = SearchParamType.Date, Path = new string[] { "Slot.start", }, XPath = "f:Slot/f:start", Expression = "Slot.start" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "accession", Description = @"The accession number associated with the specimen", Type = SearchParamType.Token, Path = new string[] { "Specimen.accessionIdentifier", }, XPath = "f:Specimen/f:accessionIdentifier", Expression = "Specimen.accessionIdentifier" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "bodysite", Description = @"The code for the body site from where the specimen originated", Type = SearchParamType.Token, Path = new string[] { "Specimen.collection.bodySite", }, XPath = "f:Specimen/f:collection/f:bodySite", Expression = "Specimen.collection.bodySite" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "collected", Description = @"The date the specimen was collected", Type = SearchParamType.Date, Path = new string[] { "Specimen.collection.collectedDateTime", "Specimen.collection.collectedPeriod", }, XPath = "f:Specimen/f:collection/f:collectedDateTime | f:Specimen/f:collection/f:collectedPeriod", Expression = "Specimen.collection.collected" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "collector", Description = @"Who collected the specimen", Type = SearchParamType.Reference, Path = new string[] { "Specimen.collection.collector", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:Specimen/f:collection/f:collector", Expression = "Specimen.collection.collector" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "container", Description = @"The kind of specimen container", Type = SearchParamType.Token, Path = new string[] { "Specimen.container.type", }, XPath = "f:Specimen/f:container/f:type", Expression = "Specimen.container.type" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "container-id", Description = @"The unique identifier associated with the specimen container", Type = SearchParamType.Token, Path = new string[] { "Specimen.container.identifier", }, XPath = "f:Specimen/f:container/f:identifier", Expression = "Specimen.container.identifier" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "identifier", Description = @"The unique identifier associated with the specimen", Type = SearchParamType.Token, Path = new string[] { "Specimen.identifier", }, XPath = "f:Specimen/f:identifier", Expression = "Specimen.identifier" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "parent", Description = @"The parent of the specimen", Type = SearchParamType.Reference, Path = new string[] { "Specimen.parent", }, Target = new ResourceType[] { ResourceType.Specimen, }, XPath = "f:Specimen/f:parent", Expression = "Specimen.parent" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "patient", Description = @"The patient the specimen comes from", Type = SearchParamType.Reference, Path = new string[] { "Specimen.subject", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:Specimen/f:subject", Expression = "Specimen.subject" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "subject", Description = @"The subject of the specimen", Type = SearchParamType.Reference, Path = new string[] { "Specimen.subject", }, Target = new ResourceType[] { ResourceType.Device, ResourceType.Group, ResourceType.Patient, ResourceType.Substance, }, XPath = "f:Specimen/f:subject", Expression = "Specimen.subject" },
                new SearchParamDefinition() { Resource = "Specimen", Name = "type", Description = @"The specimen type", Type = SearchParamType.Token, Path = new string[] { "Specimen.type", }, XPath = "f:Specimen/f:type", Expression = "Specimen.type" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "abstract", Description = @"Whether the structure is abstract", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.abstract", }, XPath = "f:StructureDefinition/f:abstract", Expression = "StructureDefinition.abstract" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "base", Description = @"Structure that this set of constraints applies to", Type = SearchParamType.Uri, Path = new string[] { "StructureDefinition.base", }, XPath = "f:StructureDefinition/f:base", Expression = "StructureDefinition.base" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "base-path", Description = @"Path that identifies the base element", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.snapshot.element.base.path", "StructureDefinition.differential.element.base.path", }, XPath = "f:StructureDefinition/f:snapshot/f:element/f:base/f:path | f:StructureDefinition/f:differential/f:element/f:base/f:path", Expression = "StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "code", Description = @"A code for the profile", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.code", }, XPath = "f:StructureDefinition/f:code", Expression = "StructureDefinition.code" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "context", Description = @"A use context assigned to the structure", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.useContext", }, XPath = "f:StructureDefinition/f:useContext", Expression = "StructureDefinition.useContext" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "context-type", Description = @"resource | datatype | mapping | extension", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.contextType", }, XPath = "f:StructureDefinition/f:contextType", Expression = "StructureDefinition.contextType" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "date", Description = @"The profile publication date", Type = SearchParamType.Date, Path = new string[] { "StructureDefinition.date", }, XPath = "f:StructureDefinition/f:date", Expression = "StructureDefinition.date" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "description", Description = @"Text search in the description of the profile", Type = SearchParamType.String, Path = new string[] { "StructureDefinition.description", }, XPath = "f:StructureDefinition/f:description", Expression = "StructureDefinition.description" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "display", Description = @"Use this name when displaying the value", Type = SearchParamType.String, Path = new string[] { "StructureDefinition.display", }, XPath = "f:StructureDefinition/f:display", Expression = "StructureDefinition.display" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "experimental", Description = @"If for testing purposes, not real usage", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.experimental", }, XPath = "f:StructureDefinition/f:experimental", Expression = "StructureDefinition.experimental" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "ext-context", Description = @"Where the extension can be used in instances", Type = SearchParamType.String, Path = new string[] { "StructureDefinition.context", }, XPath = "f:StructureDefinition/f:context", Expression = "StructureDefinition.context" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "identifier", Description = @"The identifier of the profile", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.identifier", }, XPath = "f:StructureDefinition/f:identifier", Expression = "StructureDefinition.identifier" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "kind", Description = @"datatype | resource | logical", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.kind", }, XPath = "f:StructureDefinition/f:kind", Expression = "StructureDefinition.kind" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "name", Description = @"Name of the profile", Type = SearchParamType.String, Path = new string[] { "StructureDefinition.name", }, XPath = "f:StructureDefinition/f:name", Expression = "StructureDefinition.name" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "path", Description = @"A path that is constrained in the profile", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.snapshot.element.path", "StructureDefinition.differential.element.path", }, XPath = "f:StructureDefinition/f:snapshot/f:element/f:path | f:StructureDefinition/f:differential/f:element/f:path", Expression = "StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "publisher", Description = @"Name of the publisher of the profile", Type = SearchParamType.String, Path = new string[] { "StructureDefinition.publisher", }, XPath = "f:StructureDefinition/f:publisher", Expression = "StructureDefinition.publisher" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "status", Description = @"The current status of the profile", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.status", }, XPath = "f:StructureDefinition/f:status", Expression = "StructureDefinition.status" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "type", Description = @"Any datatype or resource, including abstract ones", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.constrainedType", }, XPath = "f:StructureDefinition/f:constrainedType", Expression = "StructureDefinition.constrainedType" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "url", Description = @"Absolute URL used to reference this StructureDefinition", Type = SearchParamType.Uri, Path = new string[] { "StructureDefinition.url", }, XPath = "f:StructureDefinition/f:url", Expression = "StructureDefinition.url" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "valueset", Description = @"A vocabulary binding reference", Type = SearchParamType.Reference, Path = new string[] { "StructureDefinition.snapshot.element.binding.valueSetUri", "StructureDefinition.snapshot.element.binding.valueSetReference", }, Target = new ResourceType[] { ResourceType.ValueSet, }, XPath = "f:StructureDefinition/f:snapshot/f:element/f:binding/f:valueSetUri | f:StructureDefinition/f:snapshot/f:element/f:binding/f:valueSetReference", Expression = "StructureDefinition.snapshot.element.binding.valueSet" },
                new SearchParamDefinition() { Resource = "StructureDefinition", Name = "version", Description = @"The version identifier of the profile", Type = SearchParamType.Token, Path = new string[] { "StructureDefinition.version", }, XPath = "f:StructureDefinition/f:version", Expression = "StructureDefinition.version" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "contact", Description = @"Contact details for source (e.g. troubleshooting)", Type = SearchParamType.Token, Path = new string[] { "Subscription.contact", }, XPath = "f:Subscription/f:contact", Expression = "Subscription.contact" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "criteria", Description = @"Rule for server push criteria", Type = SearchParamType.String, Path = new string[] { "Subscription.criteria", }, XPath = "f:Subscription/f:criteria", Expression = "Subscription.criteria" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "payload", Description = @"Mimetype to send, or blank for no payload", Type = SearchParamType.String, Path = new string[] { "Subscription.channel.payload", }, XPath = "f:Subscription/f:channel/f:payload", Expression = "Subscription.channel.payload" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "status", Description = @"requested | active | error | off", Type = SearchParamType.Token, Path = new string[] { "Subscription.status", }, XPath = "f:Subscription/f:status", Expression = "Subscription.status" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "tag", Description = @"A tag to add to matching resources", Type = SearchParamType.Token, Path = new string[] { "Subscription.tag", }, XPath = "f:Subscription/f:tag", Expression = "Subscription.tag" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "type", Description = @"rest-hook | websocket | email | sms | message", Type = SearchParamType.Token, Path = new string[] { "Subscription.channel.type", }, XPath = "f:Subscription/f:channel/f:type", Expression = "Subscription.channel.type" },
                new SearchParamDefinition() { Resource = "Subscription", Name = "url", Description = @"Where the channel points to", Type = SearchParamType.Uri, Path = new string[] { "Subscription.channel.endpoint", }, XPath = "f:Subscription/f:channel/f:endpoint", Expression = "Subscription.channel.endpoint" },
                new SearchParamDefinition() { Resource = "Substance", Name = "category", Description = @"The category of the substance", Type = SearchParamType.Token, Path = new string[] { "Substance.category", }, XPath = "f:Substance/f:category", Expression = "Substance.category" },
                new SearchParamDefinition() { Resource = "Substance", Name = "code", Description = @"The code of the substance", Type = SearchParamType.Token, Path = new string[] { "Substance.code", }, XPath = "f:Substance/f:code", Expression = "Substance.code" },
                new SearchParamDefinition() { Resource = "Substance", Name = "container-identifier", Description = @"Identifier of the package/container", Type = SearchParamType.Token, Path = new string[] { "Substance.instance.identifier", }, XPath = "f:Substance/f:instance/f:identifier", Expression = "Substance.instance.identifier" },
                new SearchParamDefinition() { Resource = "Substance", Name = "expiry", Description = @"Expiry date of package or container of substance", Type = SearchParamType.Date, Path = new string[] { "Substance.instance.expiry", }, XPath = "f:Substance/f:instance/f:expiry", Expression = "Substance.instance.expiry" },
                new SearchParamDefinition() { Resource = "Substance", Name = "identifier", Description = @"Unique identifier for the substance", Type = SearchParamType.Token, Path = new string[] { "Substance.identifier", }, XPath = "f:Substance/f:identifier", Expression = "Substance.identifier" },
                new SearchParamDefinition() { Resource = "Substance", Name = "quantity", Description = @"Amount of substance in the package", Type = SearchParamType.Quantity, Path = new string[] { "Substance.instance.quantity", }, XPath = "f:Substance/f:instance/f:quantity", Expression = "Substance.instance.quantity" },
                new SearchParamDefinition() { Resource = "Substance", Name = "substance", Description = @"A component of the substance", Type = SearchParamType.Reference, Path = new string[] { "Substance.ingredient.substance", }, Target = new ResourceType[] { ResourceType.Substance, }, XPath = "f:Substance/f:ingredient/f:substance", Expression = "Substance.ingredient.substance" },
                new SearchParamDefinition() { Resource = "SupplyDelivery", Name = "identifier", Description = @"External identifier", Type = SearchParamType.Token, Path = new string[] { "SupplyDelivery.identifier", }, XPath = "f:SupplyDelivery/f:identifier", Expression = "SupplyDelivery.identifier" },
                new SearchParamDefinition() { Resource = "SupplyDelivery", Name = "patient", Description = @"Patient for whom the item is supplied", Type = SearchParamType.Reference, Path = new string[] { "SupplyDelivery.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:SupplyDelivery/f:patient", Expression = "SupplyDelivery.patient" },
                new SearchParamDefinition() { Resource = "SupplyDelivery", Name = "receiver", Description = @"Who collected the Supply", Type = SearchParamType.Reference, Path = new string[] { "SupplyDelivery.receiver", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:SupplyDelivery/f:receiver", Expression = "SupplyDelivery.receiver" },
                new SearchParamDefinition() { Resource = "SupplyDelivery", Name = "status", Description = @"in-progress | completed | abandoned", Type = SearchParamType.Token, Path = new string[] { "SupplyDelivery.status", }, XPath = "f:SupplyDelivery/f:status", Expression = "SupplyDelivery.status" },
                new SearchParamDefinition() { Resource = "SupplyDelivery", Name = "supplier", Description = @"Dispenser", Type = SearchParamType.Reference, Path = new string[] { "SupplyDelivery.supplier", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:SupplyDelivery/f:supplier", Expression = "SupplyDelivery.supplier" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "date", Description = @"When the request was made", Type = SearchParamType.Date, Path = new string[] { "SupplyRequest.date", }, XPath = "f:SupplyRequest/f:date", Expression = "SupplyRequest.date" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "identifier", Description = @"Unique identifier", Type = SearchParamType.Token, Path = new string[] { "SupplyRequest.identifier", }, XPath = "f:SupplyRequest/f:identifier", Expression = "SupplyRequest.identifier" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "kind", Description = @"The kind of supply (central, non-stock, etc.)", Type = SearchParamType.Token, Path = new string[] { "SupplyRequest.kind", }, XPath = "f:SupplyRequest/f:kind", Expression = "SupplyRequest.kind" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "patient", Description = @"Patient for whom the item is supplied", Type = SearchParamType.Reference, Path = new string[] { "SupplyRequest.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:SupplyRequest/f:patient", Expression = "SupplyRequest.patient" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "source", Description = @"Who initiated this order", Type = SearchParamType.Reference, Path = new string[] { "SupplyRequest.source", }, Target = new ResourceType[] { ResourceType.Organization, ResourceType.Patient, ResourceType.Practitioner, }, XPath = "f:SupplyRequest/f:source", Expression = "SupplyRequest.source" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "status", Description = @"requested | completed | failed | cancelled", Type = SearchParamType.Token, Path = new string[] { "SupplyRequest.status", }, XPath = "f:SupplyRequest/f:status", Expression = "SupplyRequest.status" },
                new SearchParamDefinition() { Resource = "SupplyRequest", Name = "supplier", Description = @"Who is intended to fulfill the request", Type = SearchParamType.Reference, Path = new string[] { "SupplyRequest.supplier", }, Target = new ResourceType[] { ResourceType.Organization, }, XPath = "f:SupplyRequest/f:supplier", Expression = "SupplyRequest.supplier" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "description", Description = @"Natural language description of the TestScript", Type = SearchParamType.String, Path = new string[] { "TestScript.description", }, XPath = "f:TestScript/f:description", Expression = "TestScript.description" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "identifier", Description = @"External identifier", Type = SearchParamType.Token, Path = new string[] { "TestScript.identifier", }, XPath = "f:TestScript/f:identifier", Expression = "TestScript.identifier" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "name", Description = @"Informal name for this TestScript", Type = SearchParamType.String, Path = new string[] { "TestScript.name", }, XPath = "f:TestScript/f:name", Expression = "TestScript.name" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "testscript-capability", Description = @"TestScript required and validated capability", Type = SearchParamType.String, Path = new string[] { "TestScript.metadata.capability.description", }, XPath = "f:TestScript/f:metadata/f:capability/f:description", Expression = "TestScript.metadata.capability.description" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "testscript-setup-capability", Description = @"TestScript setup required and validated capability", Type = SearchParamType.String, Path = new string[] { "TestScript.setup.metadata.capability.description", }, XPath = "f:TestScript/f:setup/f:metadata/f:capability/f:description", Expression = "TestScript.setup.metadata.capability.description" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "testscript-test-capability", Description = @"TestScript test required and validated capability", Type = SearchParamType.String, Path = new string[] { "TestScript.test.metadata.capability.description", }, XPath = "f:TestScript/f:test/f:metadata/f:capability/f:description", Expression = "TestScript.test.metadata.capability.description" },
                new SearchParamDefinition() { Resource = "TestScript", Name = "url", Description = @"Absolute URL used to reference this TestScript", Type = SearchParamType.Uri, Path = new string[] { "TestScript.url", }, XPath = "f:TestScript/f:url", Expression = "TestScript.url" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "code", Description = @"A code defined in the value set", Type = SearchParamType.Token, Path = new string[] { "ValueSet.codeSystem.concept.code", }, XPath = "f:ValueSet/f:codeSystem/f:concept/f:code", Expression = "ValueSet.codeSystem.concept.code" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "context", Description = @"A use context assigned to the value set", Type = SearchParamType.Token, Path = new string[] { "ValueSet.useContext", }, XPath = "f:ValueSet/f:useContext", Expression = "ValueSet.useContext" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "date", Description = @"The value set publication date", Type = SearchParamType.Date, Path = new string[] { "ValueSet.date", }, XPath = "f:ValueSet/f:date", Expression = "ValueSet.date" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "description", Description = @"Text search in the description of the value set", Type = SearchParamType.String, Path = new string[] { "ValueSet.description", }, XPath = "f:ValueSet/f:description", Expression = "ValueSet.description" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "expansion", Description = @"Uniquely identifies this expansion", Type = SearchParamType.Uri, Path = new string[] { "ValueSet.expansion.identifier", }, XPath = "f:ValueSet/f:expansion/f:identifier", Expression = "ValueSet.expansion.identifier" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "identifier", Description = @"The identifier for the value set", Type = SearchParamType.Token, Path = new string[] { "ValueSet.identifier", }, XPath = "f:ValueSet/f:identifier", Expression = "ValueSet.identifier" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "name", Description = @"The name of the value set", Type = SearchParamType.String, Path = new string[] { "ValueSet.name", }, XPath = "f:ValueSet/f:name", Expression = "ValueSet.name" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "publisher", Description = @"Name of the publisher of the value set", Type = SearchParamType.String, Path = new string[] { "ValueSet.publisher", }, XPath = "f:ValueSet/f:publisher", Expression = "ValueSet.publisher" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "reference", Description = @"A code system included or excluded in the value set or an imported value set", Type = SearchParamType.Uri, Path = new string[] { "ValueSet.compose.include.system", }, XPath = "f:ValueSet/f:compose/f:include/f:system", Expression = "ValueSet.compose.include.system" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "status", Description = @"The status of the value set", Type = SearchParamType.Token, Path = new string[] { "ValueSet.status", }, XPath = "f:ValueSet/f:status", Expression = "ValueSet.status" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "system", Description = @"The system for any codes defined by this value set", Type = SearchParamType.Uri, Path = new string[] { "ValueSet.codeSystem.system", }, XPath = "f:ValueSet/f:codeSystem/f:system", Expression = "ValueSet.codeSystem.system" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "url", Description = @"The logical URL for the value set", Type = SearchParamType.Uri, Path = new string[] { "ValueSet.url", }, XPath = "f:ValueSet/f:url", Expression = "ValueSet.url" },
                new SearchParamDefinition() { Resource = "ValueSet", Name = "version", Description = @"The version identifier of the value set", Type = SearchParamType.Token, Path = new string[] { "ValueSet.version", }, XPath = "f:ValueSet/f:version", Expression = "ValueSet.version" },
                new SearchParamDefinition() { Resource = "VisionPrescription", Name = "datewritten", Description = @"Return prescriptions written on this date", Type = SearchParamType.Date, Path = new string[] { "VisionPrescription.dateWritten", }, XPath = "f:VisionPrescription/f:dateWritten", Expression = "VisionPrescription.dateWritten" },
                new SearchParamDefinition() { Resource = "VisionPrescription", Name = "encounter", Description = @"Return prescriptions with this encounter identifier", Type = SearchParamType.Reference, Path = new string[] { "VisionPrescription.encounter", }, Target = new ResourceType[] { ResourceType.Encounter, }, XPath = "f:VisionPrescription/f:encounter", Expression = "VisionPrescription.encounter" },
                new SearchParamDefinition() { Resource = "VisionPrescription", Name = "identifier", Description = @"Return prescriptions with this external identifier", Type = SearchParamType.Token, Path = new string[] { "VisionPrescription.identifier", }, XPath = "f:VisionPrescription/f:identifier", Expression = "VisionPrescription.identifier" },
                new SearchParamDefinition() { Resource = "VisionPrescription", Name = "patient", Description = @"The identity of a patient to list dispenses for", Type = SearchParamType.Reference, Path = new string[] { "VisionPrescription.patient", }, Target = new ResourceType[] { ResourceType.Patient, }, XPath = "f:VisionPrescription/f:patient", Expression = "VisionPrescription.patient" },
                new SearchParamDefinition() { Resource = "VisionPrescription", Name = "prescriber", Description = @"Who authorizes the vision product", Type = SearchParamType.Reference, Path = new string[] { "VisionPrescription.prescriber", }, Target = new ResourceType[] { ResourceType.Practitioner, }, XPath = "f:VisionPrescription/f:prescriber", Expression = "VisionPrescription.prescriber" },
            };
        }
}
